小智 5
在受监控的应用程序端,有一种方法可以使用 netcat 将两个输出重定向到出站连接:
$ ./application 2>&1 | nc <remote-host> <remote-port>
这样,您将重定向stderr到stdoutnetcat,然后通过管道将其全部传输到 netcat,它将负责设置套接字、与远程主机建立连接等等。
但是,请记住printf(),如果这是您用来写入stdout. 在我的本地测试中,我已经看到stderr应用程序发送到的数据会在另一个侦听端立即看到,但另一方面,发送到的数据stdout仅在应用程序退出或缓冲区中有足够数据时才会发送一次全部冲洗干净。因此,如果您关心监控端的信息的顺序和可用性,我建议您fflush(stdout);在打印一些有趣stdout的内容时调用 ,或者替换调用printf(),fprintf()等等write(), 不缓冲。缺点是你必须接触应用程序的代码,当然,但我不知道有什么方法可以从外部强制刷新应用程序的输出缓冲区(即来自 bash)。