问题出在哪里?
import nmap
我安装了nmap和python,当我使用import nmap
时没有任何问题。但是在使用时:
nmap.PortScanner()
抛出此错误:
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
nmap.PortScanner()
File "./nmap/nmap.py", line 153, in __init__
raise PortScannerError('nmap program was not found in path. PATH is:{0}'.format(os.getenv('PATH')))
nmap.nmap.PortScannerError: 'nmap program was not found in path. PATH is : /usr/lib /lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games: /usr/local/games'"
答案 0 :(得分:8)
对于Windows用户:
我建议首先关闭所有终端和IDLE或当前尝试运行脚本时打开的任何其他窗口。
接下来,打开命令行并输入
pip uninstall python-nmap
如果您不确定当前系统上是否安装了Nmap二进制文件,请执行简单搜索
nmap
从开始菜单中。如果已安装,请继续执行下一步,否则请转至Nmap's official download page
下载Windows自安装并运行它。记录它正在安装的目录。
转到该目录。对我来说是
C:\Program Files (x86)\Nmap
打开通常在
中找到的系统环境变量编辑器My PC > System Information > Advance settings > Environment Variables
或右键单击
我的电脑或我的电脑或其他任何电话被调用并选择属性然后提前设置然后在高级选项卡底部的环境变量
为Path
和You
System
按Edit
并输入full path to your Nmap director
例如;C:\Program Files (x86)\Nmap\
按确定并退出编辑器。
现在返回命令行并输入:pip install python-nmap
允许它安装然后重新启动ide
并再次测试您的代码。
答案 1 :(得分:7)
python-nmap
似乎依赖nmap
,这是进行实际网络扫描和审核的二进制文件。
您可以使用以下命令检查终端中是否nmap在$PATH
中:
which nmap
您可以使用以下命令在类似debian的发行版中安装nmap:
apt-get install nmap
pacman -Sy nmap
nmap
如果您确定已安装nmap
二进制文件,但您认为它不在$PATH
中,则可能必须将安装了nmap的目录添加到{{1} }}
为此,请修改用户目录中的$PATH
文件,或.bashrc
(将为所有用户更改)并添加以下内容:
/etc/bashrc
但是为安装nmap二进制文件的目录更改export PATH="$PATH:/usr/local/nmap/bin"
。
更改文件后,请务必打开新的shell会话,或键入/usr/local/nmap/bin
进行刷新。
您还必须确保它具有执行权限(exec bash
)。
执行时:
chmod +x <file>
你应该看到这样的事情:
nmap --version
如果您这样做,Nmap version 6.46 ( http://nmap.org )
Platform: i686-pc-linux-gnu
Compiled with: liblua-5.2.3 openssl-1.0.1g libpcre-8.34 libpcap-1.5.3 nmap-libdnet-1.12 ipv6
Compiled without:
Available nsock engines: epoll poll select
已安装在nmap
。
答案 2 :(得分:1)
我遇到了同样的问题。只需输入一个终端:
sudo apt-get install nmap
问题解决了。
答案 3 :(得分:0)
尝试运行nm= nmap.PortScanner()
我尝试了上面给出的大部分解决方案,但它们对我不起作用。对我有用的是使用home brew(信息:http://brew.sh)安装适用于Mac OS X的nmap并运行命令
$ brew install nmap.
现在nm= nmap.PortScanner()
在没有早期错误的情况下运行。
答案 4 :(得分:0)
使用Jessy lite
在Raspberry Pi 3上运行我必须:
sudo apt-get update
sudo apt-get upgrade
然后我可以:
sudo apt-get install nmap
nmap --version
答案 5 :(得分:0)
关于nmap的注意事项
我使用nmap搜索掩码192.168.1.0/24,但它没有找到所有ip的接缝。例如:我的笔记本电脑在192.168.1.119上找不到,所以我最终使用了以下组合:
def ping(self, ip):
# Use the system ping command with count of 1 and wait time of 1.
ret = subprocess.call(['ping', '-c', '1', '-W', '1', ip],
stdout=open('/dev/null', 'w'),
stderr=open('/dev/null', 'w'))
return ret == 0 # Return True if our ping command succeeds
在多线程Pinger内部
Pinger我来自:http://blog.boa.nu/2012/10/python-threading-example-creating-pingerpy.html
我创建了自己的IpInfo类来存储信息并在每个IP上搜索开放端口,在这里我使用nmap :(代码是“正在进行中”,但你会得到这个想法。调整性能的想法会很好)
class IpInfo(object):
ip = None
hostname = None
ports = []
lastSeenAt = strftime("%Y-%m-%d %H:%M:%S", gmtime())
def findHostName(self):
if(ip):
self.hostname = str(socket.gethostbyaddr(ip)[0])
else:
raise NameError('IP missing')
def findOpenPorts(self):
print('findOpenPorts')
nm = nmap.PortScanner()
nm.scan(host)
nm.command_line()
nm.scaninfo()
for proto in nm[self.ip].all_protocols():
print('----------')
print('Protocol : %s' % proto)
lport = nm[self.ip][proto].keys() #<------ This 'proto' was changed from the [proto] to the ['tcp'].
lport.sort()
for port in lport:
if(nm[self.ip][proto][port]['state'] == 'open'):
self.ports.append(port)
答案 6 :(得分:0)
在Windows下,您必须先为Windows安装nmap ,然后才能使用此链接https://nmap.org/download.html
安装答案 7 :(得分:0)
对于macOS用户,只需使用brew install nmap
而不是pip
答案 8 :(得分:0)
我有一个完美的解决方案..
第一种类型:- apt-get remove nmap
然后 :- apt autoremove
然后 :- 转到www.pypi.org
并输入python nmap并下载0.6版本
使用命令提取它:- tar -zxvf filename
cd 到新提取的文件
类型:- python setup.py install
然后
apt-get install nmap
你准备好了。