[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bash und named pipes (mkfifo)
[Thread Prev] | [Thread Next]
- Subject: bash und named pipes (mkfifo)
- From: Markus Hochholdinger <Markus@xxxxxxxxxxxxxxxxx>
- Date: Fri, 2 Feb 2007 23:30:30 +0100
- To: uugrn@xxxxxxxxxxxxxxx
Hallo Liste,
hier mal eine kleine Knobel-Aufgabe:
Das hier wuerde 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 gewuenscht. 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 haelt 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 (unnoetig?) hoch.
Ohje, beim tippen dieser Mail habe ich eine Loesung gefunden, schicke die Mail
trotzdem mal raus, vlt. gibt es ja bessere Loesungen?
Also ich habe es wie folgt geloest:
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 Loesungen fuer mein Problem? Ich
wuerde gerne ohne grosse Zeitverzoegerung Kommandos auf entfernten Server
ausfuehren und die Ausgabe der Kommandos dann auswerten.
Jedes mal ein ssh-Connect ist mir zu teuer (Resourcen und Zeit).
--
Gruss
\|/
eMHa (o o)
------------------------------------------------------oOO--U--OOo--
Markus Hochholdinger
e-mail mailto:Markus@xxxxxxxxxxxxxxxxx .oooO
www http://www.hochholdinger.net ( ) Oooo.
------------------------------------------------------\ (----( )-
\_) ) /
(_/
--
http://mailman.uugrn.org/mailman/listinfo/uugrn