Ich versuche, tail
eine 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.log
4-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-ssh
was genauso funktioniert wie dsh
. Kann jemand erklären, was hier los ist?
Wie behebe ich dieses Problem? Wäre ideal, ssh
wenn möglich mit Straight zu gehen .
PS Ich möchte keine multitail
oder ähnliche Befehle verwenden, da ich willkürliche Befehle ausführen können.
dbitail
es hier auschecken und herunterladen .