在Python中构建一个IP sacanner,返回活动主机列表。只返回一个主机
我只写了一个月的Python,这是我第一个找不到答案的问题 我正在构建一个Python脚本,其中包含一个IP扫描程序作为其功能的一部分。它在本地网段上查找具有开放Telnet端口(23)的主机,并返回找到的主机列表。此脚本将在Windows上运行。代码如下:在Python中构建一个IP sacanner,返回活动主机列表。只返回一个主机,python,list,sockets,Python,List,Sockets,我只写了一个月的Python,这是我第一个找不到答案的问题 我正在构建一个Python脚本,其中包含一个IP扫描程序作为其功能的一部分。它在本地网段上查找具有开放Telnet端口(23)的主机,并返回找到的主机列表。此脚本将在Windows上运行。代码如下: import socket def isOpen(hostname, port): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) socket.setde
import socket
def isOpen(hostname, port):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.setdefaulttimeout(0.1)
result = sock.connect_ex((hostname, port))
sock.close()
return result == 0
def ipScan(start, end):
livehosts = []
for i in range (start, end):
res = isOpen("192.168.1."+str(i), 23)
if res:
foundhost = "192.168.1." + str(i)
livehosts.append(foundhost)
return livehosts
print (ipScan(0, 254))
我知道,这是粗糙的,不能说明扫描计算机在哪个子网中,但我已将其剥离回去,尝试进行故障排除
我遇到的问题是,我只得到了一个单一的项目列表
['192.168.1.2']
网络上应该有5个设备具有开放的Telnet端口,但我只能让此脚本返回单个设备。期望输出为:
['192.168.1.2','192.168.1.3','192.168.1.4','192.168.101','192.168.1.124', etc...]
在已知活动主机上启动搜索将返回该主机,但不会返回其他主机。例如,如果我在192.168.1.101开始搜索,它将返回
['192.168.1.101']
而不是
['192.168.1.101', '192.168.1.124', etc...]
应该如此
将来,我打算实现线程来提高性能,并实现一种脚本发现它所在的子网并从中找出要扫描的内容的方法。一旦找到一台主机,您将返回列表,该主机回答:
if res:
foundhost = "192.168.1." + str(i)
livehosts.append(foundhost)
return livehosts <--
这样,您的列表可以在返回之前完全填充。是!非常感谢。缩进错误,通常是这样。@pspkiller91如果这对您有帮助,请不要忘记勾选答案,这样问题就结束了检查返回语句的缩进。它应该在for循环之外。
for i in range (start, end):
res = isOpen("192.168.1."+str(i), 23)
if res:
foundhost = "192.168.1." + str(i)
livehosts.append(foundhost)
return livehosts