Re: Bash-Skript, while-Schleife mit ssh
Hi!
2011/3/19 Harald Weidner <hweidner-lists@gmx.net>
>
> Hallo,
>
> Alexander Skwar <askwar@yahoo.com>:
>
> >Das es übrigens zuerst an ssh und nicht am Remote ./Befehl liegt, kann man
> >leicht daran erkennen, das die while Schleife auch dann abbricht, wenn man
> >Remote nur zB "hostname" aufruft (also Einen Befehel, der nicht von stdin
> >liest).
>
> Tut es das?
Sonst hätte ich's nicht geschrieben ;)
MacBook-Pro:~ alex$ printf '1\n2\n3\n' | while read z; do echo $z ;
ssh pp hostname ; done
1
pp
MacBook-Pro:~ alex$ printf '1\n2\n3\n' | while read z; do echo $z ;
ssh pp hostname < /dev/null ; done
1
pp
2
pp
3
pp
Lokal: Mac OSX, Remote: Squeeze
Ist keine Spezialität von OSX, sondern habe
ich bisher überall so gehabt.
> harald@local:~/test$ ./loop.sh
> ********* 1
> remote
> ********* 2
> remote
> ********* 3
> remote
Nicht reproduzierbar. Hier bricht loop, wie
zu erwarten, nach dem ersten Durchlauf
ab.
> Wenn sich das Skript bei dir anders verhält, kann das zahlreiche Ursachen
> haben. Hinter dem simpel aussehenden "ssh host command" kann sich auf der
> Remote Seite durchaus viel Komplexität verbergen. Je nach Konfiguration des
> sshd wird vielleicht /sbin/login aufgerufen. Es wird die Shell des Benutzers
> gestartet, die möglicherweise Startup-Skripte wie z.B. ~/.bashrc abarbeitet.
Unter welchen Umständen erreicht man denn ein
Verhalten, wie Du es oben demonstriert hat?
> Daher ist das Skript eine fragile Konstruktion und man sollte auf jeden Fall
> ssh mit einer leeren Standardeingabe starten. Die Aussage, dass der ssh
> Client von sich aus alles auf der Standardeingabe liest, ist aber nicht
> richtig.
Trotzdem ist es bisher aber bei mir unter
den verschiedensten Konstruktionen *immer*
so gewesen, das ssh direkt abgebrochen hat.
Meine Erklärung war (für mich) bisher, das
ssh alles auf stdin "weg"liest.
Alexander
--
↯ Lifestream (Twitter, Blog, …) ↣ http://alexs77.soup.io/ ; ↯
↯ Chat (Jabber/Google Talk) ↣ a.skwar@gmail.com , AIM: alexws77 ↯
Reply to: