
Ich habe ein Shell-Skript, das auf Hunderten von Linux-Rechnern läuft und am Ende eine CSV-Zusammenfassungszeile ausgibt. Ich muss das in einer Datei zusammenfassen, um die Ergebniszusammenfassung zu überprüfen. Gibt es eine Möglichkeit, diese CSV-Zeile über das Netzwerk auf einen einzigen Rechner zu übertragen, der sie alle in eine einzige Datei weiterleitet?
Vielleicht so etwas wie ein einfacher HTTP-Server, der alle Eingaben in eine Datei anhängt >> und das Skript dann einen Curl-Befehl ausführen kann, um sie an diesen Server zu senden?
Antwort1
Eine einfache Lösung, um die Ausgabe einer Anwendung von Hunderten von Systemen an ein einziges zurückzusenden, wäre die Verwendung von netcat
.
Auf dem zentralen Server wird netcat
eine Endlosschleife zum Empfangen von Eingaben eingerichtet.
while true; do nc -l 4444; done | tee foo.csv
Führen Sie dann auf jedem Anwendungshost
app.exe | nc foo.example.com 4444
Vielleicht nicht sehr robust, aber es würde seinen Zweck erfüllen.
Für eine zuverlässigere Lösung richten Sie rsyslog
auf dem zentralen Server ein. Verwenden Sie dann auf jedem der App-Hosts logger --server foo.example.com "your message here"
. Die über gesendeten Nachrichten logger
werden von rsyslog
zur weiteren Verarbeitung in einer Datei aufgezeichnet. Möglicherweise schwieriger einzurichten, aber auf lange Sicht einfacher.