
Tengo un script de shell ejecutándose en cientos de máquinas Linux que genera una línea de resumen csv al final. Necesito recopilar eso en un archivo para revisar el resumen de resultados. ¿Hay alguna manera de transferir esa línea csv a través de la red a una sola máquina que las canalice todas a un solo archivo?
¿Quizás algo así como un servidor http simple que agrega >> imprime todas las entradas a un archivo y luego el script puede ejecutar un comando curl para publicarlo en ese servidor?
Respuesta1
Una solución sencilla para que cientos de sistemas envíen la salida de una aplicación a uno solo sería utilizar netcat
.
Uno, el servidor central, colocado netcat
en un bucle infinito para recibir información.
while true; do nc -l 4444; done | tee foo.csv
Luego, en cada uno de los hosts de la aplicación se ejecuta
app.exe | nc foo.example.com 4444
Quizás no sea muy robusto pero haría el trabajo.
Para obtener una solución más confiable, configúrela rsyslog
en el servidor central. Luego, en cada una de las aplicaciones que utilizan los hosts logger --server foo.example.com "your message here"
. Los mensajes publicados logger
se registrarán en un archivo rsyslog
para su posterior procesamiento. Posiblemente sea más difícil de configurar pero más fácil a largo plazo.