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

Проблема с передачей файла из 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'

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

Эта работа выполняется из crontab. Который, как я понимаю, работает в немного иной среде, чем root (или, по крайней мере, так кажется, судя по его поведению).

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

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

приводит к ошибке, что файл/root/HRDataFeed.txtНе может быть найдено.

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

РЕДАКТИРОВАТЬ

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

          • /root/hrdatafeed > last_run.txt

Однако в досье так ничего и не попало.

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

решение1

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

решение2

В итоге я немного переписал сценарий, чтобы он звучал так:

#!/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, чтобы она запускалась с меньшей частотой ;)

Связанный контент