Bash while循环脚本,该脚本使用迭代的IP和端口号运行Nmap

Bash while循环脚本,该脚本使用迭代的IP和端口号运行Nmap,bash,while-loop,increment,nmap,script,Bash,While Loop,Increment,Nmap,Script,小结:我正在尝试创建一个Bash脚本,它选择一个IP地址及其关联的开放端口,然后通过Nmap运行每个IP并显示/存储结果 端口文件(portsList)的格式: IP文件(ipList)的格式: 我的Bash脚本: #!/bin/bash portsvar="$(cat formattedPorts)" hostvar="$(cat oneHost)" while read -r line; do echo "$line" >

小结:我正在尝试创建一个Bash脚本,它选择一个IP地址及其关联的开放端口,然后通过Nmap运行每个IP并显示/存储结果

端口文件(portsList)的格式:

IP文件(ipList)的格式:

我的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
下面的注释中包含jhnc的代码。结果是:

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的输入运行一次。

为什么需要
oneHost
文件?为什么不仅仅是
grep-w“$line”端口列表
?您也可以在awk中执行此操作:
awk-v ip=“$line”'$1==line{print$2}
请使用
格式化端口
oneHost
文件的内容更新问题;还可以使用a)脚本生成的(错误的)输出和b)所需的(正确的)输出(确保它与您提供的示例输入数据匹配)更新问题,例如“如果有方法显示Nmap扫描的输出,同时将其重定向到'>>'文件”。。。查看
tee
命令(或者
tee-a
如果打算附加到输出文件)
awk'NR==FNR{q[$1]+;next}q[$1]{p[$1]=p[$1](p[$1]?”,“:”($3=“udp”?“U::“T:”)$2}END{for(i in p)系统(sprintf(“echo nmap-n-sV-p-p-p%s\n”,p[i]),porttee}>
#!/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
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