源码参考刘天斯的《自动化运维》
#coding:utf-8
import sys
import nmap
try:
hosts = sys.argv[1] #等待用户输入IP
ports = sys.argv[2] #等待用户输入port
except IndexError:
print("for example:python xxx.py 192.168.1.1 20,80")
sys.exit()
try:
nm = nmap.PortScanner() #创建一个对象
nm.scan(hosts=hosts, arguments=" -p "+ports) #-p 表示端口扫描
except nmap.PortScannerError:
print('nmap not found', sys.exc_info()[0])
sys.exit()
except Exception as e:
print("Unexpected error:", sys.exc_info()[0])
print(str(e))
sys.exit()
#对主机进行for循环
for host in nm.all_hosts():
print('-'*50)
print('Host: %s(%s)'%(host, nm[host].hostname()))
print('State : %s'%(nm[host].state()))
#对协议进行for循环
for proto in nm[host].all_protocols():
print('----------')
print('Protocol : %s'%proto)
lport = nm[host][proto].keys()
lport.sort() #端口排序
#对端口进行for循环
for port in lport:
print('port : %s\tstate : %s'%(port, nm[host][proto][port]['state']))
编辑好之后,sudo执行这个文件,python2和python3都可以执行,只要都装了模块