Ich versuche, taileine Protokolldatei auf mehreren Remotecomputern zu erstellen und die Ausgabe an meine lokale Arbeitsstation weiterzuleiten. Ich möchte, dass die Verbindungen geschlossen werden, wenn ich Ctrl- drücke C.
Im Moment habe ich folgende Funktion, die fast wie vorgesehen funktioniert .
function dogfight_tail() {
logfile=/var/log/server.log
pids=""
for box in 02 03; do
ssh server-$box tail -f $logfile | grep $1 &
pids="$pids $!"
done
trap 'kill -9 $pids' SIGINT
trap wait
}
Die Verbindungen werden geschlossen und ich erhalte die Ausgabe von tail. ABER es gibt eine Art Pufferung, da die Ausgabe stapelweise erfolgt.
Und hier ist der lustige Teil ...
Ich kann das gleiche Pufferverhalten feststellen, wenn ich Folgendes ausführe und "test" /var/log/server.log4-5 Mal an die Datei auf den Remotecomputern anhänge ...
ssh server-01 "tail -f /var/log/server.log | grep test"
… Und zwei Möglichkeiten gefunden, es zu deaktivieren…
Füge -t Flag zu ssh hinzu.
ssh -t server-01 "tail -f /var/log/server.log | grep test"Entfernen Sie das Zitat aus dem Remote-Befehl.
ssh server-01 tail -f /var/log/server.log | grep test
Keiner dieser Ansätze funktioniert jedoch für die Funktion, die auf mehreren oben genannten Maschinen ausgeführt wird.
Ich habe versucht, dsh, die das gleiche Pufferverhalten beim Ausführen haben.
dsh -m server-01,server-02 -c "tail -f /var/log/server.log | grep test"
Gleiches gilt, wenn ich das Zitat entferne, verschwindet die Pufferung und alles funktioniert einwandfrei.
dsh -m server-01,server-02 -c tail -f /var/log/server.log | grep test
Auch ausprobiert parallel-sshwas genauso funktioniert wie dsh. Kann jemand erklären, was hier los ist?
Wie behebe ich dieses Problem? Wäre ideal, sshwenn möglich mit Straight zu gehen .
PS Ich möchte keine multitailoder ähnliche Befehle verwenden, da ich willkürliche Befehle ausführen können.
dbitailes hier auschecken und herunterladen .