Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.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扫描网络上的所有主机_Python - Fatal编程技术网

Python扫描网络上的所有主机

Python扫描网络上的所有主机,python,Python,我需要扫描网络上的每台主机,看看它们是否使用python在端口80上托管Web服务器。我写了一个脚本来做这件事,但它的效率令人难以置信。是否有任何模块或库可以更有效地完成此任务 def scanhosts(): for ifaceName in interfaces(): addresses = [i['addr'] for i in ifaddresses(ifaceName).setdefault(AF_INET, [{'addr':'No IP addr'}] )]

我需要扫描网络上的每台主机,看看它们是否使用python在端口80上托管Web服务器。我写了一个脚本来做这件事,但它的效率令人难以置信。是否有任何模块或库可以更有效地完成此任务

def scanhosts():
    for ifaceName in interfaces():
        addresses = [i['addr'] for i in ifaddresses(ifaceName).setdefault(AF_INET, [{'addr':'No IP addr'}] )]
        if ifaceName == "wlan0":
            return ', '.join(addresses)

 def scanlooper(subnet):
    for i in range(0,1):
        for x in range(0,999):
            s = "%s.%s.%s" % (subnet,i,x)
            request = urllib2.Request('http://%s/' % s)
            try:
                response = urllib2.urlopen(request)
                html = response.read()
                if html != "False":
                    print "%s is hosting a server" % s
            except:
                print "%s is not hosting a server" % s

localip = scanhosts()
ipstrip = localip.strip(".")
subnet = "%s.%s" % (ipstrip[0],ipstrip[1])
scanlooper(subnet)
显然,有一种更好的方法来执行这项任务,从100万潜在主机下载一个页面几乎是没有效率的


感谢

查看python绑定以了解

这个问题可能适合我,这不是一个评论吗?我曾想过使用nmap模块,但我不能扫描所有子网(主机可以存在于172.20.*.*)),我不认为nmap有能力扫描所有主机。