![](/img/trans.png)
[英]PortScannerError 'nmap program not found in path' (but it is in path)
[英]('Nmap not found', <class 'nmap.nmap.PortScannerError'>)
哪里有問題?
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'"
對於 Windows 用戶:
我建議在嘗試運行腳本時首先關閉所有終端和 IDLE 或您當前打開的任何其他窗口。
接下來,打開命令行並鍵入
pip uninstall python-nmap
如果您不確定當前系統上是否安裝了 Nmap 二進制文件,請簡單搜索
nmap
從你的開始菜單。 如果已經安裝,繼續下一步,如果沒有,去Nmap的官方下載頁面
下載windows自安裝並運行它。 記錄它正在安裝到的目錄。
去那個目錄。 對我來說是
C:\\Program Files (x86)\\Nmap
打開系統的環境變量編輯器,通常可以在
My PC > System Information > Advance settings > Environment Variables
或者右鍵
我的電腦或我的電腦或任何你的電腦,然后選擇屬性,然后高級選項卡底部的高級設置然后環境變量
為You
和System
選擇Path
按Edit
並輸入full path to your Nmap director
的full path to your Nmap director
例如;C:\\Program Files (x86)\\Nmap\\
按確定並退出編輯器。
現在回到你的命令行並輸入: pip install python-nmap
允許它安裝然后重新啟動你的ide
並再次測試你的代碼。
python-nmap
似乎依賴於nmap
,它是執行實際網絡掃描和審計的二進制文件。
如果 nmap 在您的$PATH
,您可以使用以下命令檢查終端:
which nmap
您可以使用以下命令在類似 debian 的發行版中安裝 nmap:
apt-get install nmap
pacman -Sy nmap
nmap
如果您確定安裝了nmap
二進制文件,但您認為它不在您的$PATH
,您可能需要將安裝 nmap 的目錄添加到您的$PATH
。
為此,請編輯用戶目錄中的.bashrc
文件,或/etc/bashrc
(對於所有用戶都會更改)並添加以下內容:
export PATH="$PATH:/usr/local/nmap/bin"
但更改/usr/local/nmap/bin
為安裝 nmap 二進制文件的目錄。 更改文件后,一定要打開一個新的 shell 會話,或者輸入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
已安裝並位於您的$PATH
。
我曾經也有過一樣的問題。 只需在終端中輸入:
sudo apt-get install nmap
並解決了問題。
使用 Jessy lite 在 Raspberry Pi 3 上運行
我不得不:
sudo apt-get update
sudo apt-get upgrade
然后我可以:
sudo apt-get install nmap
nmap --version
關於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)
windows下必須先安裝nmap for windows ,可以用這個鏈接安裝https://nmap.org/download.html
對於 macOS 用戶,只需使用brew install nmap
而不是使用 pip
我有一個完美的解決方案..
第一種類型:- 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
你准備好了。
對於 Windows:我發現這很有幫助:
choco install nmap
如果可能的話,你必須在提升的命令下運行這個 Powershell 我假設你已經完成了pip install python-nmap
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.