纯 bash 可以执行端口扫描吗?

the*_*sti 0 networking bash

不使用任何外部程序,仅使用 bash 语言,是否可以在远程主机上执行端口扫描?

在浏览了 bash 的内置函数后,我会说:不。但也许有一些解决方法或其他可能的命令可以执行,而这些命令不在 bash 内置命令中。

Ste*_*itt 8

您可以使用 Bash 的 TCP 连接支持来检查开放端口:

if 2>/dev/null >"/dev/tcp/${IP}/${PORT}"; then echo open; fi
Run Code Online (Sandbox Code Playgroud)

将检查是否可以打开到端口${PORT}上的连接${IP}

测试本身是通过尝试重定向到/dev/tcp/${IP}/${PORT}; 当目标端口不可访问时,将标准错误重定向到/dev/null( 2>/dev/null) 会隐藏导致的错误消息。

这可用于循环扫描所有端口。

  • 这可以在没有任何 exec 的情况下更简单地完成,使用 `if 2>/dev/null >"/dev/tcp/$IP/$PORT"; 然后回声打开;菲` (2认同)