bash und named pipes (mkfifo)

Autor: Markus Hochholdinger <Markus_at_hochholdinger.net>
Datum: 02.02.2007
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


Received on Fri Feb 2 23:35:58 2007

Dieses Archiv wurde generiert von hypermail 2.1.8.

Weitere Links: