我正在尝试显示使用端口 1 到 1023 的主机上运行的所有服务及其版本,方式如下:
ssh, OpenSSH 5.9p1 Debian 5ubuntu1 (protocol 2.0)
smtp, Postfix smtpd
http, Apache httpd 2.2.22 ((Ubuntu))
rpcbind
imap, Courier Imapd (released 2011)
ssl/imap, Courier Imapd (released 2011)
我知道如何显示它们但不知道如何按照上述格式显示:
nmap -p 1-1023 -sV 主机
后续编辑:
我设法只显示服务而没有任何多余的无用文本:
nmap -p 1-1023 -sV host | head -n -5 | tail -n +7
输出:
8/tcp open http BitTornado tracker T-0.3.18
21/tcp open ftp vsftpd 2.3.5
22/tcp open ssh OpenSSH 5.9p1 Debian 5ubuntu1 (protocol 2.0)
23/tcp open telnet Linux telnetd
25/tcp open smtp Postfix smtpd
80/tcp open http Apache httpd 2.2.22 ((Ubuntu))
111/tcp open rpcbind
143/tcp open imap Courier Imapd (released 2011)
158/tcp open ssh OpenSSH 5.9p1 Debian 5ubuntu1.1 (protocol 2.0)
165/tcp open ssh OpenSSH 5.9p1 Debian 5ubuntu1.1 (protocol 2.0)
177/tcp open ftp vsftpd 2.3.5
210/tcp open ssh OpenSSH 5.9p1 Debian 5ubuntu1.1 (protocol 2.0)
993/tcp open ssl/imaps?
现在我真的很好奇如何才能摆脱前两列。
答案1
这个肯定有效,刚刚测试过,它正是你想要的:
nmap -p 1-1023 -sV host | head -n -5 | tail -n +7 | awk '{print substr($0, index($0, $3))}'
index
找到第 3 列并返回其位置,substring
然后在整行中标记该位置$0
。然后将所有这些发送到print
显示它的位置。awk 中的默认字段分隔符是空格(空格、TAB、换行符),因此无需使用 -F 开关。