yum install nmap -y && pip install python-nmap
#!/usr/bin/env python
#coding:utf-8
import sys
import nmap
scan_row = []
try:
hosts = sys.argv[1]
port = sys.argv[2]
except IndexError:
print "Uasge ./scanport.py ip port"
sys.exit(1)
try:
nm = nmap.PortScanner()
except namp.PortScannerError:
print "Nmap not found",sys.enc_info()[0]
sys.exit(2)
except:
print("Unexpected error:",sys.exc_info()[0])
sys.exit(3)
try:
nm.scan(hosts=hosts,arguments="-v -sS -p"+port)
except Exception,e:
print "Scan error:" +str(e)
for host in nm.all_hosts():
print "----------------------------------------------------------------------"
print('Host : %s (%s)' % (host, nm[host].hostname())) #输出主机及主机名
print('State : %s' % nm[host].state()) #输出主机状态,如up、down
for proto in nm[host].all_protocols(): #遍历扫描协议
print('----------')
print('Protocol : %s' % proto) #输入协议名
lport = nm[host][proto].keys() #获取协议的所有扫描端口
lport.sort() #端口列表排序
for port in lport: #遍历端口及输出端口与状态
print('port : %s\tstate : %s' % (port, nm[host][proto][port]['state']))
其中主机输入支持所有表达方式,如www.qq.com、192.168.1.*、192.168.1.1-20、192.168.1.0/24等,
端口输入格式也非常灵活,如80,443,22、80,22-443。