外壳中的插座

2020-12-04 20:43:03

我最近学到的东西让我觉得很棒-您可以直接从外壳创建套接字!好吧,假设您使用bash或zsh-从某些表面级别的挖掘中,我找不到任何鱼类。

Bash开箱即用地支持tcp和udp连接,并且使用/ dev中的虚拟设备来实现。输入

然后,您将创建到HOST:PORT的连接。 $ PROTO可以是tcp或udp。如果无法建立连接,则写入/读取文件将失败。

除了可以从终端轻松访问之外,它对于脚本也非常方便,尤其是在您没有nc / telnet的情况下。例如,如果某个网络应用的本地版本在端口8000上运行,则可以检查该应用是否在以下端口上运行:1

如果您不熟悉,则使用不带任何参数的exec来重定向文件描述符和文件。通过将fd 3与/ dev / tcp / localhost / 4000关联,它将尝试在此处创建文件,从而建立连接。我们使用>打开套接字进行写入,尽管在这种情况下我们不需要编写任何内容。

通过使用<>我们可以打开一个文件进行读写,并使用它创建一个超级简单的curl:

我敢肯定,您会看到仅使用bash即可打开套接字的强大功能。去玩吧!

zsh具有一个外部模块,您可以加载该模块以使用其套接字功能。 它不支持bash之类的udp,但在某些方面更强大! 要加载该模块,请将以下内容放入.zshrc或在您的Shell中运行: 直接从zsh文档开始,我们可以使用ztcp在两台计算机之间创建连接: $ REPLY变量是最后一个ztcp命令返回的文件描述符,指的是它刚刚创建的套接字/连接。 #主机echo -e" hello!" >& $ talkfd#客户端计算机读取-r行<& $ talkfd; 打印-r-$ line> 你好! 同样,您还可以做更多的事情,尤其是具有监听连接的能力。 感谢u / barubary指出为什么此代码的先前版本错误! ↩