8

問題はどこだ?

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'"
4

10 に答える 10

12

Windows ユーザーの場合:

スクリプトを実行しようとするときは、最初にすべての端末と IDLE、または現在開いている他のウィンドウを閉じることをお勧めします。

次に、コマンドラインを開いて入力します

pip uninstall python-nmap

現在のシステムに Nmap バイナリがインストールされているかどうかわからない場合は、単純な検索を行います

nmap

スタートメニューから。インストールされている場合は次の手順に進みます。インストールされていない場合は、Nmap の公式ダウンロード ページに移動します。

Windows セルフ インストールをダウンロードして実行します。インストール先のディレクトリを記録します。

そのディレクトリに移動します。私にとってはそうでした

C:\Program Files (x86)\Nmap

通常は次の場所にあるシステムの環境変数エディターを開きます

My PC > System Information > Advance settings > Environment Variables

または右クリック

[マイ PC] または [マイ コンピュータ] またはその他の名前で、プロパティを選択し、設定を進め、[詳細設定] タブの下部にある [環境変数] を選択します。

Path両方を選択しYouSystem

を押しEditて入力しますfull path to your Nmap director

例えば;C:\Program Files (x86)\Nmap\

[OK] を押してエディターを終了します。

コマンド ラインに戻り、次のように入力します。pip install python-nmap インストールを許可してから再起動しide、コードを再度テストします。

于 2015-11-04T23:15:38.477 に答える
11

python-nmapnmap実際のネットワーク スキャンと監査を行うバイナリであるに依存しているようです。

$PATH次のコマンドを使用して、nmap がターミナルにあるかどうかを確認できます。

 which nmap

Debian ライク

次のコマンドを使用して、debian のようなディストリビューションに nmap をインストールできます。

apt-get install nmap

アーチ Linux:

pacman -Sy nmap

すでにインストールされていますnmap

バイナリがインストールされていることは確かであるnmapが、それが にないと思われる場合は$PATH、nmap がインストールされているディレクトリを に追加する必要があるかもしれません$PATH

.bashrcこれを行うには、ユーザーのディレクトリ内のファイルを編集するか、 /etc/bashrc(すべてのユーザーに対して変更されます)、次を追加します。

export PATH="$PATH:/usr/local/nmap/bin"

/usr/local/nmap/binただし、nmap バイナリがインストールされているディレクトリに変更します。ファイルを変更した後は、必ず新しいシェル セッションを開くか、入力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.

于 2014-04-28T19:34:01.520 に答える
0

実行しようとしたときに同様の問題に直面しましたnm= nmap.PortScanner()

上記の解決策のほとんどを試しましたが、うまくいきませんでした。私にとってうまくいったのは、自作を使用して Mac OS X 用の nmap をインストールし (情報: http://brew.sh )、コマンドを実行することでした。

$ brew install nmap.

nm= nmap.PortScanner()以前のエラーなしで実行されるようになりました。

于 2015-03-24T05:20:53.847 に答える
0

Jessy lite を使用して Raspberry Pi 3 で実行する

そうしなければならなかった:

sudo apt-get update

sudo apt-get upgrade

それから私はできました:

sudo apt-get install nmap

nmap --version
于 2016-12-11T11:04:34.473 に答える
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の内部

入手したピンガー: http://blog.boa.nu/2012/10/python-threading-example-creating-pingerpy.html

情報を保存し、各 IP で開いているポートを検索するために、独自の IpInfo クラスを作成しました。ここでは、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)
于 2016-12-14T14:34:45.840 に答える
0

Windows の場合: これが役に立ちました:

choco install nmap

おそらくPowershellがすでに実行されていると思われる場合は、昇格したコマンドでこれを実行する必要がありますpip install python-nmap

于 2021-12-17T09:01:54.217 に答える