过滤Netcat会产生Bash脚本

时间:2012-09-08 10:29:23

标签: bash filter netcat

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

#!/bin/bash

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

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

2 个答案:

答案 0 :(得分: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服务器,则应扫描open 53 / udp,而不是53 / tcp(netcat中的选项 -u

答案 1 :(得分:0)

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

#!/bin/bash

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

然后你可以根据需要操纵(grep,sed,awk等)myFile