MAC os x 下 python-nmap 安裝問題總結


1、先說遇到的問題

pip install python-nmap    

安裝python-nmap 之后,遇到如下問題:

>>>import namp
>>> nm = nmap.PortScanner()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Python/2.7/site-packages/nmap/nmap.py", line 131, in __init__
    os.getenv('PATH')
nmap.nmap.PortScannerError: 'nmap program was not found in path. PATH is : /Library/Frameworks/Python.framework/Versions/3.5/bin:/usr/local/lib/python2.7/site-packages/python_nmap-0.6.1-py2.7.egg:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/mysql/bin'

查看PortScanner類源碼發現,__init__(self, nmap_search_path=('nmap', '/usr/bin/nmap', '/usr/local/bin/nmap', '/sw/bin/nmap', '/opt/local/bin/nmap')) 初始化設置了默認查找路徑, 還有段代碼是出現以上錯誤的源程序,如下:

        #'Nmap version 5.0 ( http://nmap.org )'
        # This is for Mac OSX. When idle3 is launched from the finder, PATH is not set so nmap was not found
        for nmap_path in nmap_search_path:
            try:
                if sys.platform.startswith('freebsd') \
                   or sys.platform.startswith('linux') \
                   or sys.platform.startswith('darwin'):
                    p = subprocess.Popen([nmap_path, '-V'],
                                         bufsize=10000,
                                         stdout=subprocess.PIPE,
                                         close_fds=True)
                else:
                    p = subprocess.Popen([nmap_path, '-V'],
                                         bufsize=10000,
                                         stdout=subprocess.PIPE)

            except OSError:
                pass
            else:
                self._nmap_path = nmap_path  # save path
                break
        else:
            raise PortScannerError(
                'nmap program was not found in path. PATH is : {0}'.format(
                    os.getenv('PATH')
                )
            )  

這段代碼簡要解釋下功能: 就是使用初始路徑在命令行中執行: 路徑 -V ,  上面的代碼就是執行:nmap -V  

在命令行中執行: namp -V , 如果出現 nmap: command not found,   就是你沒有安裝nmap , 查了些資料說python-nmap 依賴nmap , 需要先安裝

nmap 才行。

PS: 路徑上的nmap 不是文件夾,也不是namp.py文件,而是二進制可執行文件, 如果相應路徑找不到nmap可執行文件,說明namp沒安裝或路徑不對

2、 brew install nmap 

這個我試很多次才成功, 老是出現找不到資源的錯誤,

curl: (28) Operation timed out after 0 milliseconds with 0 out of 0 bytes received

Error: Failed to download resource "nmap"

可能是因為網絡不行。

到此nmap安裝已經安裝好了。

但是執行: nmap 命令還是出現:

-bash: nmap: command not found

需要按照命令提示執行一下命令:

 brew link --overwrite nmap

再執行namp -V ,  成功!

安裝nmap成功后命令行中有個警告:

==> Caveats

Python modules have been installed and Homebrew's site-packages is not

in your Python sys.path, so you will not be able to import the modules

this formula installed. If you plan to develop with these modules,

please run:

  mkdir -p /Users/jason/Library/Python/2.7/lib/python/site-packages

  echo 'import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")' >> /Users/jason/Library/Python/2.7/lib/python/site-packages/homebrew.pth

這個python modeles就是指python-nmap , 按照命令執行下:(我的python-nmap 是先於nmap安裝好的,所以有這個提示。)

mkdir -p /Users/jason/Library/Python/2.7/lib/python/site-packages

echo 'import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")' >> /Users/jason/Library/Python/2.7/lib/python/site-packages/homebrew.pth

至此,
nmap.PortScanner() 問題就解決了。

PS: http://nmap.org/ , 可以直接下載nmap 安裝包
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM