Ich habe dieses Skript zusammengestellt, um täglich einen Ordner mit verzweigten Github-Repositorys zu aktualisieren. Es läuft gut, wenn ich es von einer Eingabeaufforderung aus anrufe, aber ich kann herausfinden, wie es meine id_rsa zuverlässig nutzen kann, wenn es als Cron-Job ausgeführt wird. Die eval 'ssh-agent'
ist ein Versuch, genau das zu tun, aber es hat keinen positiven Effekt gesehen.Zugriff auf den SSH-Schlüssel aus einem Bash-Skript, das über einen Cron-Job ausgeführt wird
#!/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
Dies ist wahrscheinlich ein schrecklich ineffizient Weg über den Prozess im Allgemeinen zu gehen, aber es funktioniert und ich immer es nicht sehen. Wenn ich es schaffen könnte, meine Kreditwürdigkeit zu nutzen, wäre ich begeistert.
Ich habe noch nie ssh-add ausgeführt, aber ich bin auf OS X, also ist meine Vermutung alles, was für mich passiert. Das Erstellen eines Schlüssels ohne Passphrase und die Verwendung von ssh-add scheint der Zweck gewesen zu sein. Ich habe auch die Host-Bits in .ssh/config wie Greg vorgeschlagen. Jetzt funktioniert es! Vielen Dank –