GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Senden von „ps“ über mehrere Server, Ausgabe in eine Textdatei?

Ich versuche, ein Skript zu erstellen, das alle nicht mehr funktionierenden Prozesse über 66 Redhat-Boxen in einer einzigen Textdatei ausgibt. Ich verstehe die Prinzipien, dies auf einer Box zu tun, bin mir aber nicht sicher, wie ich diesen Prozess in etwas umwandeln soll, das auf einer Box läuft, aber mehrere Boxen abfragt.

Ich habe also dieses kleine Skript gefunden:

for host in $(cat hosts.txt); do ssh "$host" "$command" >"output.$host"; done

Ich verstehe, dass ich im Wesentlichen ps -ef | grep "defunct" als $command , aber ich denke, dass jede von mir erstellte Ausgabedatei auf dem Host abgelegt wird, auf dem sie ausgeführt wird.

Ich muss dies von einer Box ausführen, die Ausgabe auf dieser einen Box speichern, aber die Informationen für die anderen 65 Boxen enthalten?

Ich glaube, wir haben passwortloses ssh eingerichtet. Meine Unix-Kenntnisse sind eher mittelmäßig, ich kenne Teile davon, weil ich SAS verwende.

Akzeptierte Antwort:

Die Umleitung erfolgt auf dem aufrufenden Computer, nicht auf dem Remote-Computer, sodass die Ergebnisdatei lokal ist. Auch das grep muss nicht remote ausgeführt werden:

while read -r host; do
    ssh "$host" ps -ef | grep "defunct" >"output.$host"
done <hosts.txt

Dies führt ps -ef aus auf jedem Host und grep wird den defunct extrahieren Zeilen der Ausgabe. Das grep läuft lokal, nicht remote. Die Ergebnisdatei wird ebenfalls lokal erstellt.

Wenn Sie eine einzelne Ausgabedatei wünschen:

while read -r host; do
    ssh "$host" ps -ef | grep "defunct"
done <hosts.txt >output.txt

Oder sogar (für einen einzelnen Aufruf von grep )

while read -r host; do
    ssh "$host" ps -ef 
done <hosts.txt | grep "defunct" >output.txt

Linux
  1. Ausgabe nach Stdout und gleichzeitig Grep in eine Datei?

  2. Wie lösche ich mehrere zufällige Zeilen aus einer Textdatei mit Sed?

  3. Wie verkettet man mehrere Ausgabezeilen zu einer Zeile?

  4. So fügen Sie den Inhalt mehrerer Dateien in eine Datei ein

  5. Wie teilt man eine Textdatei in mehrere *.txt-Dateien auf?

Pingen Sie mehrere Server an und zeigen Sie die Ausgabe in einer Top-ähnlichen Text-Benutzeroberfläche an

So speichern Sie die Linux-Befehlsausgabe in einem Bild oder einer Textdatei

Bearbeiten von Text mit sed und grep

So verbinden Sie mehrere Zeilen in einer Datei in Linux zu einer

So extrahieren Sie E-Mail-Adressen aus einer Textdatei unter Linux

3 Methoden zum Anzeigen der tail -f-Ausgabe mehrerer Protokolldateien in einem Terminal