При выполнении данного кода нужно чтобы авторизация сессии ssh происходила по ключу
logi () {
echo `date '+%d %b %g %T'` $1 | tee -a $log
}
if [ $# -lt 2 ] ; then
echo -e "usage `basename $0` LIST COMMANDS [FILE]"; exit 1
fi
log=~/log/`basename $0`.log
> $log
list=$1
commnd=$2
sendfile=$3
trap 'logi "Break by user" ; exit 1' 2
while read LINE ; do
if ping -c1 $LINE >/dev/null 2>&1 ; then
if [ $# -eq 3 ] ; then scp $sendfile `id -nu`@$LINE: >/dev/null 2>/dev/null
if [ $? = 255 ] ; then logi "$LINE ssh error!"
fi
fi
ssh $LINE bash < $commnd && logi "$LINE OK!!!"
if [ $? = 255 ] ; then logi "$LINE ssh error!"
fi
else
logi "$LINE no ping..."
echo $LINE >> ~/log/`basename $0`$$.error
fi
done <$list