Ho messo insieme questo script per aggiornare una cartella di repository Github biforcati su base giornaliera. Funziona bene se lo chiamo da un prompt, ma posso 'capire come farlo utilizzare il mio id_rsa in modo affidabile quando viene eseguito come un cron job. il eval 'ssh-agent'
è un tentativo di fare proprio questo, ma non sembra avere alcun effetto positivo.Accesso alla chiave SSH dallo script di bash eseguito tramite un processo cron
#!/bin/sh
LOGPATH=log.txt
eval 'ssh-agent'
cd /path/to/update/folder
echo "-------START UPDATE-------">$LOGPATH
echo "Updating repos:">>$LOGPATH
date "+%F %T">>$LOGPATH
COUNT=1
find . -maxdepth 1 -type d | while read dir; do
cd "$dir"
LEN=$"${#dir}"
if [ $LEN != "1" ]
then
echo "*********">>$LOGPATH
echo "$COUNT. " ${dir:2}>>$LOGPATH
/usr/local/bin/git pull upstream master>>$LOGPATH 2>> $LOGPATH
/usr/local/bin/git push origin master>>$LOGPATH 2>> $LOGPATH
let COUNT=COUNT+1
fi
cd "$OLDPWD"
done
echo "-------END UPDATE-------">>$LOGPATH
exit 0
Questo è probabilmente un modo terribilmente inefficiente per andare sul processo in generale, ma funziona e non mi vedono mai. Se potessi farlo usare i miei crediti, sarei felice.
Non ho mai eseguito ssh-add, ma sono su OS X, quindi la mia ipotesi è tutto ciò che sta accadendo per me. Creare una chiave senza passphrase e usare ssh-add sembra aver fatto il trucco. Ho anche fatto i bit dell'host in .ssh/config come suggeriva Greg. Ora funziona! Grazie –