2014-02-04 9 views
0

Я установил nmap.exe и модуль nmap. Я не уверен, как настроить путь nmap. блок кода, где вы вводите Nmap путь заключается в следующемПроблемы с модулем Nmap в python

class PortScanner(object): 
""" 
PortScanner class allows to use nmap from python 

""" 

def __init__(self, nmap_search_path=('nmap','/usr/bin/nmap','/usr/local/bin/nmap','/sw/bin/nmap','/opt/local/bin/nmap')): 
    """ 
    Initialize PortScanner module 

    * detects nmap on the system and nmap version 
    * may raise PortScannerError exception if nmap is not found in the path 

    :param nmap_search_path: tupple of string where to search for nmap executable. Change this if you want to use a specific version of nmap. 
    :returns: nothing 

    """ 
    self._nmap_path = 'C:/Program Files (x86)/Nmap/' # nmap path 
    self._scan_result = {} 
    self._nmap_version_number = 0  # nmap version number 
    self._nmap_subversion_number = 0 # nmap subversion number 
    self._nmap_last_output = '' # last full ascii nmap output 
    is_nmap_found = False  # true if we have found nmap 

    self.__process = None 

    # regex used to detect nmap 
    regex = re.compile('Nmap version [0-9]*\.[0-9]*[^ ]* \(http://.* \)') 
    # launch 'nmap -V', we wait after '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: 
      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')))    

Я поместил путь в переменной self._nmap_path. Однако, похоже, это не работает. Может ли кто-нибудь с опытом работы в nmap мне помочь? Как начать работу в nmap? Я исследовал это часами, но до сих пор не получил ответа. Ошибка я получаю это

Traceback (most recent call last): 
    File "<pyshell#1>", line 1, in <module> 
    nmap.PortScanner() 
    File "C:\Python33\Lib\site-packages\nmap\nmap.py", line 192, in __init__ 
    raise PortScannerError('nmap program was not found in path') 
nmap.PortScannerError: 'nmap program was not found in path' 
+0

"Это не работает" не является полезным помощником (извините). Предоставьте нам сообщения об ошибках или любые другие данные, которые вы получаете. Кроме того, что вы пробовали? Что вы исследовали в те часы? – Ruben

+0

Я добавил отчет об ошибке на вопрос – user3129956

+1

'_nmap_path' сохраняет путь для последующего использования. Вместо этого вызовите класс с последовательностью, содержащей абсолютный путь, такой как 'PortScanner (('C:/Program Files (x86) /Nmap/nmap.exe',))'. Я предлагаю начать с учебника Python, если это не сразу очевидно. В любом случае, если вам повезет, что это сработает, но я ничего не вижу о поддержке Windows на [сайте проекта] (http://xael.org/norman/python/python-nmap). Другие методы/классы могут принимать ОС POSIX. – eryksun

ответ

0

Похоже, путь среды не настроен правильно.

Если вы открываете файл C:\Python33\Lib\site-packages\nmap\nmap.py для редактирования и смотрите строку 192. Где он смотрит?

Возможно, стоит просто переустановить с помощью самоинсталлятора, установщик должен установить для вас переменные пути.

http://nmap.org/book/inst-windows.html

Смежные вопросы