如何在输出文件中包含来自 Nmap 脚本的注释
How to include comments from Nmap script in the output file
可能有更好的方法来做到这一点,但我有一个名为“list.txt”的输入文件,其中包含我的 Nmap 扫描的 IP 地址,如下所示:
192.168.1.1 #Router
192.168.1.120 #PC
192.168.1.52 #Phone
然后我使用 Nmap 扫描并输出到文件:
nmap -iL list.txt >> output.txt
此外,我还使用 sed 使“output.txt”看起来像这样:
Host: 192.168.1.1 Status: Up
Host: 192.168.1.120 Status: Down
Host: 192.168.1.52 Status: Up
我想包含输入“list.txt”文件中的注释,但找不到实现此操作的方法。理想的“output.txt”应该是这样的:
Host: 192.168.1.1 Status: Up #Router
Host: 192.168.1.120 Status: Down #PC
Host: 192.168.1.52 Status: Up #Phone
有没有办法将“list.txt”中的评论包含在“output.txt”中?
在 shell 循环中读取文件,以便您可以获取注释并将其写入输出文件。
while read -r ip comment; do
result=$(nmap "$ip")
printf '%36s %s\n', "$result" "$comment"
done < list.txt > output.txt
一个想法使用 join
:
$ join -1 1 -2 2 -o2.1,2.2,2.3,2.4,1.2 list.txt output.txt
Host: 192.168.1.1 Status: Up #Router
Host: 192.168.1.120 Status: Down #PC
Host: 192.168.1.52 Status: Up #Phone
重新格式化为 'pretty' -t
可用:
$ join -1 1 -2 2 -o2.1,2.2,2.3,2.4,1.2 list.txt output.txt | column -t
Host: 192.168.1.1 Status: Up #Router
Host: 192.168.1.120 Status: Down #PC
Host: 192.168.1.52 Status: Up #Phone
注意:此解决方案假定两个文件都已按 IP 排序;否则文件需要预先排序,例如:
join -1 1 -2 2 -o2.1,2.2,2.3,2.4,1.2 <(sort list.txt) <(sort -k2,2 output.txt) [ | column -t ]
另一种选择是 运行 awk 原始文件和新的 output.txt 文件:
awk 'NR==FNR { ip[]=;next } { printf "%s\t%s\n",[=10=],ip[] }' list.txt output.txt > finaloutput.txt
处理第一个 (NR==FNR) 并创建一个名为 IP 的数组,其中 IP 地址(第一个 space 分隔字段)作为键,注释为值。然后在处理第二个文件(output.txt)时,打印该行,加上从 ip 数组中获取的 IP 的注释。
可能有更好的方法来做到这一点,但我有一个名为“list.txt”的输入文件,其中包含我的 Nmap 扫描的 IP 地址,如下所示:
192.168.1.1 #Router
192.168.1.120 #PC
192.168.1.52 #Phone
然后我使用 Nmap 扫描并输出到文件:
nmap -iL list.txt >> output.txt
此外,我还使用 sed 使“output.txt”看起来像这样:
Host: 192.168.1.1 Status: Up
Host: 192.168.1.120 Status: Down
Host: 192.168.1.52 Status: Up
我想包含输入“list.txt”文件中的注释,但找不到实现此操作的方法。理想的“output.txt”应该是这样的:
Host: 192.168.1.1 Status: Up #Router
Host: 192.168.1.120 Status: Down #PC
Host: 192.168.1.52 Status: Up #Phone
有没有办法将“list.txt”中的评论包含在“output.txt”中?
在 shell 循环中读取文件,以便您可以获取注释并将其写入输出文件。
while read -r ip comment; do
result=$(nmap "$ip")
printf '%36s %s\n', "$result" "$comment"
done < list.txt > output.txt
一个想法使用 join
:
$ join -1 1 -2 2 -o2.1,2.2,2.3,2.4,1.2 list.txt output.txt
Host: 192.168.1.1 Status: Up #Router
Host: 192.168.1.120 Status: Down #PC
Host: 192.168.1.52 Status: Up #Phone
重新格式化为 'pretty' -t
可用:
$ join -1 1 -2 2 -o2.1,2.2,2.3,2.4,1.2 list.txt output.txt | column -t
Host: 192.168.1.1 Status: Up #Router
Host: 192.168.1.120 Status: Down #PC
Host: 192.168.1.52 Status: Up #Phone
注意:此解决方案假定两个文件都已按 IP 排序;否则文件需要预先排序,例如:
join -1 1 -2 2 -o2.1,2.2,2.3,2.4,1.2 <(sort list.txt) <(sort -k2,2 output.txt) [ | column -t ]
另一种选择是 运行 awk 原始文件和新的 output.txt 文件:
awk 'NR==FNR { ip[]=;next } { printf "%s\t%s\n",[=10=],ip[] }' list.txt output.txt > finaloutput.txt
处理第一个 (NR==FNR) 并创建一个名为 IP 的数组,其中 IP 地址(第一个 space 分隔字段)作为键,注释为值。然后在处理第二个文件(output.txt)时,打印该行,加上从 ip 数组中获取的 IP 的注释。