我正在尝试编写一个连接到端口53上的IP列表的脚本 - 我希望结果只返回开放端口。这是我在下面运行的脚本 - 我已经尝试了grepping和切割输出,但我不确定我是否正确地执行此操作 - 我似乎无法将脚本结果传输到文本文件。
#!/bin/bash
for ip in $(seq 200 254); do
nc -v 192.168.11.$ip 53 &
done
我为它的简单而道歉我是新手 - 如果解决方案在其他地方
答案 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
。