Posix在Shell中打开套接字描述符的方法

时间:2019-02-25 12:53:35

标签: shell posix

bash中,我们可以使用file descriptors来(尝试)打开socket descriptors,如下所示:

exec 3<>/dev/prot/host/port

其中:

  • prot可以是tcpudp
  • host可以是有效的主机名或Internet地址;
  • port可以是整数端口号或服务名称。

这只是一个示例,可以使用任何重定向
(例如printf "%s" "${payload}" >"/dev/udp/${host}/${port}")。
bash v4+开始至少如此。

有人已经要求在没有内置bash的情况下完成相同的事情;
我已经找到并尝试了其他解决方案,包括(但不限于):

  • nc / netcat / nmap / tcping(或类似名称),以便“扫描”(本地或远程)端口(其中一些不会能够接收有效载荷);
  • netstat / ss(或类似名称),以便了解LISTEN状态(本地)端口(并且不能发送或接收任何有效载荷);

在其他情况中,nc被认为是完成此任务的最可移植的解决方案,尽管(至少在我看来)coreutils中不应使用它;而ss之类的解决方案不能视为有效,因为它们无法“扫描”另一台主机,也无法发送或接收负载;
无论如何,我偶然发现了一个未安装nc的环境。

我不能假定安装了其他解释器(例如pythonperl等);
我不能假定已安装编译器。

最后,正如您已经猜到的,这个问题:
是否有某种posix方式,可以使用除外壳以外的任何方式来实现完全连接?

换句话说,有一种使用连接的可移植方式吗?

0 个答案:

没有答案