我有一个在数百台 Linux 机器上运行的 shell 脚本,它在末尾输出一个 csv 摘要行。我需要将其收集到一个文件中以查看结果摘要。有没有办法通过网络将该 csv 行传输到一台机器上,然后将它们全部传输到一个文件中?
也许像一个简单的 http 服务器,附加 >> 将所有输入打印到一个文件,然后脚本可以运行 curl 命令将其发布到该服务器?
答案1
让数百个系统将应用程序的输出发回单个系统的一个简单的解决方案是使用netcat
。
一个中央服务器,进入netcat
无限循环来接收输入。
while true; do nc -l 4444; done | tee foo.csv
然后在每个应用程序主机上运行
app.exe | nc foo.example.com 4444
或许不是非常强大,但是它可以完成工作。
为了获得更可靠的解决方案,请在中央服务器上进行设置rsyslog
。然后在每个应用程序主机上使用logger --server foo.example.com "your message here"
。通过发送的消息logger
将记录在文件中以rsyslog
供进一步处理。设置起来可能更困难,但从长远来看更容易。