简单的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