Python开发Network scanner项目nmap相关代码运行报错求解决
Python网络扫描器报错排查解决
1. Portscanner属性问题修复
python-nmap库对外暴露的端口扫描类名为PortScanner(第二个单词首字母S大写),你代码中拼写为Portscanner(s小写),属于拼写错误,直接修改即可解决属性不存在报错。
2. 必须修正的代码缩进错误
你现有代码的缩进逻辑完全错误,会触发变量未定义、代码提前执行等问题:
networkscanner方法内的扫描逻辑全部写在了方法外部,无法访问方法内定义的network局部变量if __name__ == "__main__"入口代码被包含在类定义内部,不会正常触发执行
按照下方修正后的代码调整缩进即可。
3. 确认系统级nmap依赖安装
python-nmap只是nmap工具的Python封装层,必须先安装系统原生nmap程序才能正常调用:
- Windows:访问nmap官网下载安装包安装,安装后需要将nmap路径加入系统环境变量
- MacOS:执行
brew install nmap - Debian/Ubuntu:执行
sudo apt install nmap - CentOS/RHEL:执行
sudo dnf install nmap
修正后可运行完整代码
import nmap class network(object): def __init__(self): ip = input("Enter default IP address 10.10.1.1 10.10.0.1: ") self.ip = ip def networkscanner(self): if len(self.ip) == 0: network = '10.10.1.1/24' else: network = self.ip + '/24' print("Start scanning please wait....") nm = nmap.PortScanner() nm.scan(hosts=network, arguments='-sn') hosts_list = [(x, nm[x]['status']['state']) for x in nm.all_hosts()] for host, status in hosts_list: print("host\t{}".format(host)) if __name__ == "__main__": D = network() D.networkscanner()
内容的提问来源于stack exchange,提问作者GhostwhiteActualCompilers
相关产品推荐
相关产品推荐

