Проблема с передачей файла из linux в windows с помощью smbclient

у меня есть файл, расположенный на моем поле linux, который генерируется скриптом python, файл удаляется внутри каталога / root/

мой скрипт bash выглядит так:

#!/bin/bash
# Run the HR Data feed
cd /root/hr-feed
# the file created here will land one directory above the scripts in /root/
python main.py     

# Transfer the file to the server
cd /root/
smbclient \[SERVER][SHARE] --workgroup=[WRKGRP] --user=[USR] [PASS] -c 'put HRDataFeed.txt'

все работает по желанию до последней строки. Он должен выполняться с ошибкой (хотя я не совсем уверен, как выяснить, что это может быть ошибка).

эта работа выполняется с кронтаб. Который, как я понимаю, работает в несколько иной среде, чем root (или, по крайней мере, кажется, с тем, как он себя ведет).

Если я выполняю сценарий напрямую (не из crontab), он работает без сбоев, и файл передается в поле назначения windows server. Я предполагаю, что, возможно, мне нужно предоставить полный путь к HRDataFeed.txt-файл как часть команды put; однако я не могу понять это.

smbclient .... -c "put /root/HRDataFeed.txt"

приводит к ошибке, что файл / root / HRDataFeed.txt не удается найти.

любой вклад будет высоко оценен.

EDIT

Я попытался обновить crontab следующим образом
(ради тестирования я запускал его каждую минуту)

          • /корень/hrdatafeed > last_run.txt

однако никогда не казалось чтобы попасть в папку с документами.

Я попробую просто добавить канал непосредственно в команду SMBClient.

5
задан Mike McMahon
источник

2 ответов

Cron пытается отправить письмо (используя /usr/bin/sendmail) когда команда терпит неудачу-это единственный известный мне способ получить фактический вывод скрипта (вы можете установить sSMTP чтобы это работало довольно легко). Основное различие в среде cron обычно $PATH, поэтому попробуйте установить соответствующий PATH в crontab, который включает в себя каталог, где smbclient - это.

4
отвечен mgorven 2012-04-28 03:01:27
источник

Я немного переписал сценарий, чтобы прочитать так:

#!/bin/bash
# Run the HR Data feed
cd /root/hr-feed
python main.py

# Transfer the file to the server
cd /root/
/usr/bin/smbclient \\[SERVER]\HRDataFeed --workgroup=[WRKGRP] --user=[USR] [PASS] -c 'put HRDataFeed.txt'

Я изменил свой crontab на этот:

          • sh /root/hrdatafeed.sh > / root / last_run > 2>&1

наконец-то удалось получить некоторые значимые сообщения в последний файл. Хотя ошибок не было, Я предполагаю, что это было потому, что я внес изменение в установку полного пути к команде smbclient.

Спасибо за всю помощь по получению это сработало.

теперь, конечно, я буду обновлять вкладку cron, чтобы работать с немного меньшей частотой;)

1
отвечен Mike McMahon 2012-05-01 17:22:39
источник

Другие вопросы bash crontab linux samba ubuntu