Re: Bash-Skript, while-Schleife mit ssh
Moin, Zu Eurer Lösung hätte ich nach eigenen Tests doch noch was
anzumerken: s.u.
Am 18.03.2011 18:46, schrieb Alexander Skwar:
Hi!
2011/3/18 Markus Glugla<debian@xgelb.de>:
Jetzt das Problem: Das nun folgende Beispiel durchläuft nur die erste
Zeile:
cat daten.txt | while read varzeile
do
# Nun ist die Zeile in der Variable varzeile.
echo "${varzeile}"
ssh user@serverurl "./befehl auf dem server mit ${varzeile} übergeben"
done
Warum ist das so? Was macht denn der ssh-Befehl mit der while-Schleife?
ssh "isst" dein stdin auf - dh. es liest Dir einfach "alles" weg und
darum bleibt die Schleife stehen.
Mache:
while read varzeile
do
# Nun ist die Zeile in der Variable varzeile.
echo "${varzeile}"
ssh user@serverurl "./befehl auf dem server mit ${varzeile}
übergeben"< /dev/null
done< daten.txt
Die Lösung ist nur suboptimal, da dabei komplett stdin verbogen wird und
es beispielsweise nicht mehr möglich ist ein PW einzugeben o.ä.
Außerdem ist es denkbar, dass man sich damit eine Endlosschleife gebaut hat.
Beispiel: Beim Connect auf den Remotehost erscheint die Frage
"Public-Key" bestätigen yes/no. Wenn dannn immer Null "0" in die Eingabe
geschrieben wird, kommt der Prozeß wohl nicht mehr zum Ende.
Besser ist daher folgende Lösung:
file=/home/user/xxxxfile
exec 4< $file
while read -u 4 varzeile ;
do
echo "$varzeile";
done
--
Gruß Axel
------------------------------
=> einen Server härten? google mal nach Stahl härten oder was meinst Du
mit härten?
Aus:
http://www.administrator.de/index.php?content=69906
------------------------------
http://www.tty1.net/smart-questions_de.html
Reply to: