问题描述
总结:我正在尝试创建一个 Bash 脚本,该脚本选择一个 IP 地址及其关联的开放端口,然后通过 Nmap 运行每个 IP 并显示/存储结果。
ports 文件(portsList)的格式:
192.168.1.1 53 udp
192.168.1.1 80 tcp
192.168.1.1 1900 tcp
192.168.1.110 135 tcp
192.168.1.115 1080 tcp
IP文件的格式(ipList):
192.168.1.1
192.168.1.110
192.168.1.115
我的 Bash 脚本:
#!/bin/bash
portsvar="$(cat formattedPorts)"
hostvar="$(cat oneHost)"
while read -r line;
do
echo "$line" > oneHost
grep -wf oneHost portsList | awk '{print $2}' | tr '\n' ',' > formattedPorts
nmap -n -sV -p"$portsvar" "$hostvar" >> scanResults
cat scanResults
done < ipList
我花了几个小时,尝试了这段代码的多种变体,并试图在网上找到解决方案。但无济于事。此脚本最多可以扫描并输出第一个选定的 IP 和端口。
其他考虑因素是;如果端口是 UDP,则在端口选项上附加“U:”。另外,如果有一种方法可以显示 Nmap 扫描的输出,同时将其重定向到“>>”到文件中。
Bash 是我最熟悉的,但我愿意用不同的语言学习解决方案。
编辑 我通过替换尝试了以下 jhnc 的解决方案:
echo "$line" > oneHost
grep -wf oneHost portsList | awk '{print $2}' | tr '\n' ',' > formattedPorts
nmap -n -sV -p"$portsvar" "$hostvar" >> scanResults
cat scanResults
nmap -n -sV -p T:135 192.168.1.110
nmap -n -sV -p T:5985 192.168.1.112
nmap -n -sV -p T:54112,T:60000,T:8009,T:8888 192.168.1.131
nmap -n -sV -p T:5040 192.168.1.132
nmap -n -sV -p T:1041,T:1900,T:20005,T:33344,T:49152,T:49153,T:80 192.168.1.1
这个输出被回显到终端上 5 次。从这里我会尝试找到一个解决方案,让这组IP的输入运行一次。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)