简单的Socket服务器在Bash?

有没有办法快速绑定到TCP端口/ IP地址,只需将所有信息打印到STDOUT? 我有一个简单的debugging解决scheme,它将事情写入127.0.0.1:4444,我希望能够简单地绑定一个来自bash的端口,并打印所有的内容。 是否有捷径可寻?

$ nc -k -l 4444 > filename.out 

参见nc(1)

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

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

那正如你所期望的那样工作:

  nc -k -l 4444 |bash 

然后你

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

那么你会看到由bash执行的列表。

[简要安全警告]
当然,如果您在计算机上运行这样的事情,则可以为各种攻击提供广泛的开放式网关,因为您可以从networking中的任何主机上的任何用户帐户发送命令。 这不会实现任何安全性(身份validation,身份识别),并且通过networking发送所有未encryption的传输命令,因此很容易被滥用。

使用ncat添加一个答案ncat

 ncat -k -l 127.0.0.1 4444 

和man ncat的选项解释:

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