扫描网络以获取计算机名称的Python代码
我需要进行网络扫描,以获取连接到网络的电脑名称。这样做是为了对这些系统进行软件合规性检查。
我们需要系统的名称,以便连接到它们的注册表来获取信息。
我们该如何获取电脑名称,或者有没有其他方法可以连接到网络中的电脑?
2 个回答
0
这是一个非常针对Windows系统的技巧,效果还不错。
import subprocess
def get_host(target):
pro = subprocess.Popen(['ping','-a', '-n', '1', target], stdout = subprocess.PIPE, shell = True)
return pro.communicate()[0]
def parse_hostname(result):
return result.split()[1]
def get_range(network, start, finish):
while start != finish:
target = network + start
yield parse_hostname(get_host(target))
start += 1
2
你可以直接用IP地址,而不是机器名称。在Windows系统中,很多需要机器名称的系统调用,其实也可以用数字地址来代替。
比如说,这两种写法都可以用:
>>> import _winreg
>>> c = _winreg.ConnectRegistry("SOMEMACHINE", _winreg.HKEY_CLASSES_ROOT)
>>> c = _winreg.ConnectRegistry("10.10.40.9", _winreg.HKEY_CLASSES_ROOT)