Скрипт выполнения списка команд на нескольких машинах
Создано: 04-06-2009 19:54:10  Метки: ssh log work
При выполнении данного кода нужно чтобы авторизация сессии ssh происходила по ключу
#! /bin/bash
# выполнение команды на роутерах
# v1.1 (c) Sanych
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
1180 просмотров комментировать