Hallo Liste,
hier mal eine kleine Knobel-Aufgabe:
Das hier würde ich gerne machen:
bash$ mkfifo in
bash$ mkfifo out
bash$ while read cmd
> do
> echo $cmd
> done < in | ssh server 'while read cmd
> do
> $cmd
> done' > out
Und zwar so, dass nach einem
bash$ echo "ls" > in
das Konstrukt bestehen bleibt.
Nutze ich "while read cmd || true" anstatt "while read cmd" beendet sich das
Konstrukt nicht, wie gewünscht. Nur geht dann die CPU auf 100%.
Wie kann ich dem "while read cmd" beibringen, dass er nur lesen soll, wenn
auch was kommt, aber gleichzeitig die Verbindung zur Pipe offen hält sobald
ein Kommando abgesetzt wurde?
Ein
bash$ while read cmd
> do
> test -n "$cmd" && echo $cmd
> done
hilft da nur unwesentlich weiter, Load geht trotzdem (unnötig?) hoch.
Ohje, beim tippen dieser Mail habe ich eine Lösung gefunden, schicke die Mail
trotzdem mal raus, vlt. gibt es ja bessere Lösungen?
Also ich habe es wie folgt gelöst:
bash$ while true
> do
> while read cmd
> do
> echo $cmd
> done < in
> done | ssh server 'while read cmd
> do
> $cmd
> done' > out
Und noch gleich hinterher: Gibt es bessere Lösungen für mein Problem? Ich
würde gerne ohne große Zeitverzögerung Kommandos auf entfernten Server
ausführen und die Ausgabe der Kommandos dann auswerten.
Jedes mal ein ssh-Connect ist mir zu teuer (Resourcen und Zeit).
--
Gruß
\|/
eMHa (o o)
------------------------------------------------------oOO--U--OOo--
Markus Hochholdinger
e-mail mailto:Markus@Hochholdinger.net .oooO
www http://www.hochholdinger.net ( ) Oooo.
------------------------------------------------------\ (----( )-
\_) ) /
(_/
--
http://mailman.uugrn.org/mailman/listinfo/uugrn
- application/pgp-signature Anhang: stored
Received on Fri Feb 2 23:35:58 2007