2011-01-19 82 views
58

有没有办法快速绑定到TCP端口/ IP地址,只需将所有信息打印到STDOUT?我有一个简单的调试解决方案,它将事情写入127.0.0.1:4444,我希望能够简单地绑定一个来自bash的端口并打印所有遇到的问题。是否有捷径可寻?简单的Socket服务器在Bash中?

+0

相关http://unix.stackexchange.com/questions/49936/dev-tcp-listen-instead-of-nc-listen – 2016-09-02 22:20:09

回答

87
$ nc -k -l 4444 > filename.out 

看到nc(1)

+3

有没有办法做到这一点,不需要它在循环中运行,即绑定直到死亡?如果我不像这样运行,我会重复连接和断开连接到socket和'nc`:'while true;做nc -l 4444; done`。 – 2011-01-19 18:43:22

+2

添加`-k`选项。 – 2011-01-19 18:45:46

+0

在某些发行版中,您需要将其更改为'nc -k -l -p 4444'。 – 2015-04-09 11:38:47

37

仅仅因为你问如何做到这一点的bash,虽然netcat答案是非常有效的:

$ exec 3<>/dev/tcp/127.0.0.1/4444 
    $ cat <&3 
8

这是工作,你希望:

nc -k -l 4444 |bash 

然后你

echo "ls" >/dev/tcp/127.0.0.1/4444 

然后您会看到由bash执行的列表。

[略安全警告]
当然,如果你离开的事情像你的计算机上的此运行,则必须对各种攻击大开门户,因为命令可以从任何用户帐户上的任何发送主机在您的网络中。这不会实现任何安全性(身份验证,身份识别),并通过网络发送所有未加密的传输命令,因此很容易被滥用。

1

添加使用ncat是@Freedom_Ben提到了一个答案:

ncat -k -l 127.0.0.1 4444 

和从人NCAT选项的解释:

-k, --keep-open   Accept multiple connections in listen mode 
-l, --listen    Bind and listen for incoming connections