扫描网络以获取计算机名称的Python代码

0 投票
2 回答
2315 浏览
提问于 2025-04-16 13:42

我需要进行网络扫描,以获取连接到网络的电脑名称。这样做是为了对这些系统进行软件合规性检查。

我们需要系统的名称,以便连接到它们的注册表来获取信息。

我们该如何获取电脑名称,或者有没有其他方法可以连接到网络中的电脑?

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)

撰写回答