Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python KeyError扫描打开端口的主机列表_Python_List_Nmap_Port Scanning - Fatal编程技术网

Python KeyError扫描打开端口的主机列表

Python KeyError扫描打开端口的主机列表,python,list,nmap,port-scanning,Python,List,Nmap,Port Scanning,我在python脚本中有一个ip列表,我正在尝试对每个ip运行nmap扫描以查找打开的端口。我不断地发现这个错误: Traceback (most recent call last): File "rscan.py", line 33, in <module> main() File "rscan.py", line 30, in main vulnscan(nm, L) File "rscan.py", line 6, in vulnscan f

我在python脚本中有一个ip列表,我正在尝试对每个ip运行nmap扫描以查找打开的端口。我不断地发现这个错误:

Traceback (most recent call last):
  File "rscan.py", line 33, in <module>
    main()
  File "rscan.py", line 30, in main
    vulnscan(nm, L)
  File "rscan.py", line 6, in vulnscan
    for port in nm[item].all_tcp():
  File "build/bdist.linux-x86_64/egg/nmap/nmap.py", line 567, in __getitem__
KeyError: u'IP ADDRESS HERE'
“L”是包含我的ip地址的列表


使用nmap扫描打开端口的ip地址小列表的正确方法是什么?

根据您的代码,如下所示:

for item in L:
    if item in nm.all_hosts():
        for port in nm[item].all_tcp():
            state = nm[item]['tcp'][port]['state']
            if state == 'open':
                print state
检查指定的
ip
地址是否在
nm中。所有主机()
(返回
ip
列表)允许您在之后安全地查询
nm[项目]

请注意,只需将L列表与nm返回的ip地址列表相交,就可以使此代码更干净一些


谢谢你的快速回复。当我尝试这样做时,我得到了“PortScanner对象没有属性”get“忘记我之前的评论,我要检查一下我现在没有收到错误!”现在的问题是,它似乎没有扫描端口。。每次只扫描一两次,然后脚本就结束了。。。我真的不知道该怎么办。你是否检查过你认为打开的端口是否真的打开了?为了测试它,我修改了代码,如果端口关闭,则打印关闭。每当我运行扫描时,根据我扫描的主机数量,我只会得到一个或两个关闭的端口。它不应该扫描列表中每个主机的所有tcp端口吗?您使用的是什么软件包?代码的其余部分在哪里,您可以告诉它要扫描哪些IP和端口?如果是这样,您可能没有正确地使用它,但我只能假设您使用的是python-nmap。我脚本的其他部分只是收集我的ip地址并将它们放入列表中。就扫描端口而言,这就是我所拥有的一切。我遗漏了一些重要的东西,是吗?我想你在使用python nmap?请查看如何正确使用它的使用部分,这是我的一个愚蠢错误,谢谢
for item in L:
    if item in nm.all_hosts():
        for port in nm[item].all_tcp():
            state = nm[item]['tcp'][port]['state']
            if state == 'open':
                print state
items = list(set(L) & set(nm.all_hosts()))

for item in items:
    for port in nm[item].all_tcp():
        state = nm[item]['tcp'][port]['state']
        if state == 'open':
            print state