Брелок не работает в Cron
У меня проблема с моим резервным скриптом, который использует связку ключей. Сценарий отлично работает при запуске через командную строку, но не работает должным образом при вызове через cron (не передает никаких данных на удаленный хост). Оба сервера работают под управлением Ubuntu Server 14.04 LTS. мой id_rsa
используйте пустой пароль, я могу подключиться к удаленному хосту без пароля.
Задача Cron:
* * * * * bash /home/kris/sync.sh
Автор сценария:
#!/bin/bash
source $HOME/.keychain/${HOSTNAME}-sh
rsync -avz --delete --log-file=/home/kris/rsync.log /var/www/owncloud/data/ kris@192.168.56.102:/var/www/owncloud/data/
Выход:
/home/kris/sync.sh: 2: /home/kris/sync.sh: source: not found
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.0]
.profile:
/usr/bin/keychain $HOME/.ssh/id_rsa
source $HOME/.keychain/${HOSTNAME}-sh
1 ответ
Я написал следующий скрипт, который подключается к моему серверу PI ownclod и сохраняет его на моем ноутбуке. Скрипт работает отлично. Вы можете увидеть, поможет ли это вам:
#!/bin/bash
echo "[`date +"%y-%m-%d %H:%I:%S"`] Sync started";
CURRENT_DATE=`date +%y-%m-%d`
BACKUP_DIR="/home/radoslav/Backups"
CURRENT_BACKUP_DIR="$BACKUP_DIR/backup-$CURRENT_DATE"
LOG_FILE="$BACKUP_DIR/backup-$CURRENT_DATE.log"
if [ ! -d "$CURRENT_BACKUP_DIR" ]; then
mkdir "$CURRENT_BACKUP_DIR"
fi
if [ ! -f "$LOG_FILE" ]; then
touch "$LOG_FILE"
fi
rsync -aAXvzlxH --exclude='/dev' --exclude='/proc' --exclude='/sys' --exclude='/lost+found' -e "ssh" --rsync-path="sudo rsync" pi@192.168.0.168:/ "$CURRENT_BACKUP_DIR" >"$LOG_FILE" 2>&1
tar -czvf "$BACKUP_DIR/backup-$CURRENT_DATE.tar.gz" "$CURRENT_BACKUP_DIR"
rm -rf "$CURRENT_BACKUP_DIR"
echo "[`date +"%y-%m-%d %H:%I:%S"`] Sync ended";
Обратите внимание, что я использую --rsync-path="sudo rsync"
в команде rsync. Кроме того, под каким пользователем установлена кукуруза для запуска? Под пользователем root или под вашим обычным пользователем, где генерируется ключ ssh?