[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: