SFTP в задании крона

Проблема

  1. Я хочу автоматизировать загрузку файла через SFTP
  2. Я настроил сервер SFTP и вводящий механизм
  3. Я создал простой сценарий удара - script.sh
  4. Я добавил запись в кроне для сценария

Сценарий, 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 команда получает ошибку.

Идеи?

Работа над ним

  1. Замена ДОМАШНЕЙ переменной на /etc/crontab не решил проблему
  2. Утверждение полных путей в script.sh не решило проблему
  3. Утверждение переменной ПУТИ в script.sh не решило проблему
  4. Я зафиксировал ошибку от sftp команда - это 255

выполнение сценария вручную (./script.sh) все еще работы безупречно, хотя...

0
задан 4 June 2017 в 21:33

1 ответ

Рабочий пример:

простой сценарий, названный 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...

  • Лучшие команды вызова и сценарий с помощью полных путей только, чтобы быть уверенным, что крон может найти и назвать их правильно, еще он может перестать работать без полезной обратной связи.

1
ответ дан 3 November 2019 в 03:38

Другие вопросы по тегам:

Похожие вопросы: