Skompilowałem ten skrypt, aby codziennie aktualizować folder rozgałęzionych repozytoriów Github. Działa dobrze, gdy wywołuję go z wiersza, ale mogę "wymyślić, jak sprawić, by wykorzystywał on moje id_rsa niezawodnie, gdy jest uruchamiany jako zadanie cron. eval 'ssh-agent'
jest próbą zrobienia tego, ale nie wydaje się, aby miało to jakiś pozytywny wpływ.Uzyskiwanie dostępu do klucza SSH ze skryptu bash uruchomionego za pomocą zadania 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
Prawdopodobnie jest to strasznie nieskuteczny sposób, aby przejść o procesie w ogóle, ale to działa, a ja nie zawsze go zobaczyć. Gdybym mógł zdobyć to, by wykorzystać moje credo, byłbym uszczęśliwiony.
Nigdy nie uruchomiłem ssh-add, ale jestem na OS X, więc domyślam się, że wszystko dzieje się dla mnie. Stworzenie klucza bez fraz hasła i użycie ssh-add sprawiły wrażenie. Zrobiłem też bity hosta w .ssh/config, jak sugerował Greg. Teraz działa! Dzięki –