有没有一种方法可以将命令输出的连续流发送到远程监听器?

4
我正在使用Unix的netcat。
当我运行python script.py &> logfile.txt时,它持续地被捕获。
为了在远程复制这个过程,我尝试在监听器上(客户端)使用nc -l -p 8011,并在发送者(主机或服务器)上使用以下代码:
  1. python script.py &> nc 127.0.0.1 8011
  2. python script.py > nc 127.0.0.1 8011
  3. nc 127.0.0.1 8011 < python script.py
但是似乎什么都没有起作用。请帮忙解决。

2
我只是在评论中发布这个问题,因为我现在无法复现它。我认为问题在于你使用了大于号(>)将输出重定向到一个文件,这是正确的,但是如果要将输出重定向到一个命令,你需要使用管道符号(|),所以尝试从发送方将Python的输出通过管道传输给nc,并将接收方的输出重定向到一个文件。 - weberik
2个回答

5
这是你想要的吗?
接收方:
nc -l 8011 >logfile.txt

发送者:

python script.py 2>&1 | nc 127.0.0.1 8011

请确保先运行接收方代码。
编辑:如果您不知道有很多不同版本的netcat,它们都接受略有不同的参数(例如,在Debian上,nc.traditional需要nc -l -p 1234来监听端口1234,而BSD nc(例如OS X)只需要nc -l 1234,如果您的主机不支持IPv6,则ncat可能会抛出一个有趣的错误,除非您使用-4标志)- 阅读手册以找到您实际想要的选项组合。

我正在尝试远程复制输出重定向。 - Sushant Khurana
实际上,我想在这里补充一点(因为我已经学习了几个小时的nc),选项-q和-e并不适用于netcat的每个版本,事实上,mac甚至不支持-l。无论如何,这与我的问题无关。 - Sushant Khurana
更改后的答案注释 - 是的,我已经尝试过了。实际上,这是我捕获内容(管道)的第一种方法,但它没有重定向输出并在 shell 上显示了它。请参考此[文章](http://www.debian-administration.org/articles/58)。 - Sushant Khurana
1
дҪ е°қиҜ•иҝҮеңЁи„ҡжң¬иҫ“еҮәstderrж—¶дҪҝз”Ёpython script.py 2>&1 | nc 127.0.0.1 8011еҗ—пјҹ - Benjie
就这些了,谢谢。我确实尝试过stderr但没有正确地管道传递流。太好了!谢谢。 - Sushant Khurana
显示剩余2条评论

1

完美的答案,只需要稍作修改:在 "port" 后面添加-p

接收方:

nc -l -p 8011 >logfile.txt

我使用了你的建议,引入了nc帮助文件(nc -h)。
发件人:
nc -h 2>&1 | nc 127.0.0.1 8011

我尝试过。
nc -h > logfile.txt
nc -h >> logfile.txt

从未工作过。

我在两个cmd.exe中运行Windows 7的netcat。

再次感谢。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接