O Keychain não funciona em Cron

0

Eu tenho um problema com meu script de backup que está usando o keychain. O script funciona bem quando acionado via linha de comando, mas não funciona como esperado quando chamado via cron (não transfere nenhum dado para o host remoto). Ambos os servidores estão executando o Ubuntu Server 14.04 LTS. Meu id_rsa usa passphare vazio, posso conectar-me ao host remoto sem nenhuma senha.

Tarefa Cron:

* * * * * bash /home/kris/sync.sh

Script:

#!/bin/bash
source $HOME/.keychain/${HOSTNAME}-sh
rsync -avz --delete --log-file=/home/kris/rsync.log  /var/www/owncloud/data/ [email protected]:/var/www/owncloud/data/

Saída:

/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
    
por Kristopher 07.04.2015 / 10:40

1 resposta

1

Eu escrevi o seguinte script que se conecta ao meu servidor PI próprio e faz o backup no meu laptop. O roteiro está funcionando perfeitamente. Você pode ver se isso ajudará você:

#!/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" [email protected]:/ "$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";

Note que estou usando o comando --rsync-path="sudo rsync" in rsync. Também sob qual usuário é definido o milho para rodar? Sob o usuário root ou sob seu usuário normal, onde a chave ssh é gerada?

    
por shaddy 07.04.2015 / 10:53