ssh unterbricht while Schleife

G

Gast123

Hallo Leute,

für ein Netzwerk habe ich ein Script geschrieben, welches iterativ ein Programm via ssh auf einem entfernten Rechner ausführen soll.
Code:
#! /bin/bash
#########################################
#       /srv/scrips/recurse-wks         #
#                                       #
# Execute commands as root on all       #
# remote workstations in the            #
# ./.wks.list                           #
#                                       #
# (C) 2011 by Richard Neumann           #
# under the terms of the GPL            #
#########################################

WKSLIST=`dirname $0`/.wks.list
LOGFILE=/var/log/`basename $0`.log
USAGE="\
Usage: `basename $0` [commands]"

if [ $EUID -ne 0 ]; then
        echo "***`basename $0`: You must be root to run this script!" 1>&2
        exit 1
fi

if [ $# -lt 1 ]; then
        echo $USAGE
        exit 1
fi

while read WKS; do
        echo "Executing \"$@\" on \"$WKS\"." | tee $LOGFILE
        ssh $WKS "$@" 
done < $WKSLIST
./.wks.list:
Code:
wks-1
wks-2
barrechner
Dabei sind wks-1 und barrechner nicht zu erreichen (das ist OK).
Allerdings terminiert das Script nach der ersten erfolgreichen Ausführung von ssh.
Code:
[root@weinheim lsa]# /srv/scripts/recurse-wks echo foo
Executing "echo foo" on "wks-1".
ssh: connect to host wks-1 port 22: No route to host
Executing "echo foo" on "wks-2".
foo
[root@weinheim lsa]#

Was passiert da?

LG
Schard
 
Erstmal zum Debuggen: Funktioniert es bei Dir, wenn Du die Zeile, in der 'ssh' ausgefuehrt wird, auskommentierst?
 
Hallo rikola,

ja, das funktioniert natürlich.
Code:
[root@weinheim scripts]# ./recurse-wks echo FOO
Executing "echo FOO" on "wks-1".
Executing "echo FOO" on "wks-2".
Executing "echo FOO" on "barrechner".
[root@weinheim scripts]#
Ich habe auch schon versucht die Ausgaben (stdout / stderr) von ssh umzuleiten.
Das verhindert aber nicht den Abbruch der Schleife nach dem erfolgreichen ausführen von ssh.

MfG

EDIT:
Notiz an mich selbst: Das nächste Mal besser googlen:
http://www.unix.com/shell-programming-scripting/38060-ssh-break-while-loop.html
die Lösung:
Code:
ssh -n
Problem gelöst. :D
 
Zuletzt bearbeitet von einem Moderator:

Ähnliche Themen

NAS-Drive Mount in Bash-Script über crontab

script sshpass

Verschlüsseltes Backup-Script mit rsync

ip6tables Problem

Port generieren, wenn nicht dann

Zurück
Oben