Сценарий, script.sh:
#!/bin/bash
sftp user@server:/home/user/file.txt
exit 0
Выполнение сценария вручную хорошо работает (текстовый файл сохраняется в корневом каталоге), но добавляющий script.sh (с верными полномочиями) к crontab
ничего не делает.
crontab запись:
* * * * * /home/user/script.sh
Для аутентификации я использовал ssh-keygen
создать ряд ключей (частный, общедоступный) и настроить перекрестную аутентификацию к серверу SFTP.
Для автоматизации сценария я использовал keychain
для аутентификации пароля меньше.
В настоящее время у меня есть сценарий, названный script.sh, расположенным в "пользовательском" корневом каталоге (/home/user/
).
Когда выполнено root
вручную, сценарий получает файл от сервера SFTP и помещает его в /home/user/
.
Это не выполняет это действие, когда выполнено от a cron
задание. В cron
, sftp
команда получает ошибку.
Идеи?
/etc/crontab
не решил проблемуsftp
команда - это 255выполнение сценария вручную (./script.sh
) все еще работы безупречно, хотя...
Рабочий пример:
простой сценарий, названный hello.sh
, который добавляет к текстовому файлу слово привет (использует полные пути для каждой команды):
примечание myuser
является именем Вашего пользователя
#!/bin/bash
printf 'hello' >> /home/myuser/hello.txt
, делают исполняемый файл сценария использованием chmod +x hello.sh
crontab запись, которая работает каждую минуту, можно изменить это соответственно на потребности:
* * * * * /home/myuser/hello.sh
Некоторые детали:
Каждый крон прогоны задания как пользователь, который зарегистрировал его. Если пользователь root зарегистрирует задание крона, то это задание будет работать с полномочиями пользователя root.
, Если не пользователь root регистрирует задание крона, это задание будет работать с полномочиями вышеупомянутого пользователя; если задание потребует полномочий пользователя root, то оно перестанет работать, потому что оно инициируется не пользователем root...
Лучшие команды вызова и сценарий с помощью полных путей только, чтобы быть уверенным, что крон может найти и назвать их правильно, еще он может перестать работать без полезной обратной связи.