我正在尝试编写一个连接到端口 53 上的 IP 列表的脚本 - 我希望结果只返回打开的端口。这是我在下面运行的脚本 - 我尝试了 grepping 和剪切输出,但我不确定我是否正确地执行此操作 - 我似乎也无法将脚本结果通过管道传输到文本文件。
#!/bin/bash
for ip in $(seq 200 254); do
nc -v 192.168.11.$ip 53 &
done
我为它的简单性道歉我是新人 - 如果解决方案在其他地方
检查命令的退出代码,如果连接成功,它应该为零。还可以使用-z选项在连接建立后断开连接。
#!/bin/bash
for ip in $(seq 200 254); do
nc -z 192.168.11.$ip 53
if [ $? -eq 0 ]; then
echo "Hit: 192.168.11.$ip"
fi
done
如果你使用的是 nmap 而不是 netcat,你可以使用这个:
nmap 192.168.11.200-254 -p 53
PS。如果您尝试确定哪些主机运行 DNS 服务器,您应该扫描打开的 53/udp,而不是 53/tcp(netcat 中的选项-u)
如果您希望命令的所有输出都转到文件,请使用&>
. 在您的示例中,您可以使用:
#!/bin/bash
for ip in $(seq 200 254); do
nc -v 192.168.11.$ip 53 &>> myFile
done
然后,您可以随心所欲地操作(grep、sed、awk 等)myFile
。