不使用任何外部程序,仅使用bash语言,是否可以对远程主机进行端口扫描?
在浏览了 bash 的内置函数之后,我会说:不。但也许有一些解决方法或其他可能的命令可以执行,而这些命令不在 bash 内置命令中。
答案1
您可以使用 Bash 的 TCP 连接支持来检查开放端口:
if 2>/dev/null >"/dev/tcp/${IP}/${PORT}"; then echo open; fi
${PORT}
将检查是否可以打开到上端口的连接${IP}
。
测试本身是通过尝试重定向到来执行的/dev/tcp/${IP}/${PORT}
;当目标端口不可访问时,将标准错误重定向到/dev/null
( ) 会隐藏结果错误消息。2>/dev/null
这可以在循环中使用来扫描所有端口。