1

我正在尝试编写一个连接到端口 53 上的 IP 列表的脚本 - 我希望结果只返回打开的端口。这是我在下面运行的脚本 - 我尝试了 grepping 和剪切输出,但我不确定我是否正确地执行此操作 - 我似乎也无法将脚本结果通过管道传输到文本文件。

#!/bin/bash

for ip in $(seq 200 254); do
    nc -v 192.168.11.$ip 53 &
done

我为它的简单性道歉我是新人 - 如果解决方案在其他地方

4

2 回答 2

2

检查命令的退出代码,如果连接成功,它应该为零。还可以使用-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

于 2012-09-08T11:46:05.247 回答
0

如果您希望命令的所有输出都转到文件,请使用&>. 在您的示例中,您可以使用:

#!/bin/bash

for ip in $(seq 200 254); do
    nc -v 192.168.11.$ip 53 &>> myFile
done

然后,您可以随心所欲地操作(grep、sed、awk 等)myFile

于 2012-10-06T00:47:33.007 回答