本文参考的是刘天斯的《python 自动化运维》,python-nmap 可以扫描端口,代码本身不是很难,但在运行脚本中老是提示找不到nmap ,提示路径中没有,可明明已经安装了nmap包,查找各种资料,折腾半天,原来还需要安装python-nmap 包,且直接pip安装都不行,必要按如下安装
yum install nmap 这个包需要yum 安装,不能pip 安装
yum install python-pip 安装pip
pip install python-nmap pip 安装python-nmap
[root@localhost ~]# cat nmap1.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import sys
import nmap
scan_row=[]
input_data = raw_input('please input hosts and port:')
scan_row = input_data.split(" ")
if len(scan_row)!=2:
print "INPUT errors,example \"192.168.1.0/24 80,443,22\""
sys.exit(0)
hosts=scan_row[0]
port=scan_row[1]
try:
nm=nmap.PortScanner()
except nmap.PortScannerError:
print('Nmap not found',sys.exc_info()[0])
sys.exit(0)
except:
print("unexpectd error:",sys.exc_info()[0])
sys.exit(0)
try:
nm.scan(hosts=hosts,arguments='-v -sS -p'+port)
except Exception,e:
print "SCAN erro :"+str(e)
for host in nm.all_hosts():
print ('________________________________________')
print ('Host:%s(%s)' %(host,nm[host].hostname()))
print ('state:%s' % nm[host].state())
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']))