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

发布于 2024-10-22 23:49:27 字数 1436 浏览 3 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

比忠 2024-10-29 23:49:27

您或许可以只使用 IP 地址而不是名称。 Windows 中需要机器名的系统调用通常也同样接受数字地址。

例如,这两者都有效:

>>> import _winreg
>>> c = _winreg.ConnectRegistry("SOMEMACHINE", _winreg.HKEY_CLASSES_ROOT)
>>> c = _winreg.ConnectRegistry("10.10.40.9", _winreg.HKEY_CLASSES_ROOT)

You can probably just use an IP address rather than a name. System calls in Windows that requires a machine name will generally also accept a numeric address just the same.

e.g. these both work:

>>> import _winreg
>>> c = _winreg.ConnectRegistry("SOMEMACHINE", _winreg.HKEY_CLASSES_ROOT)
>>> c = _winreg.ConnectRegistry("10.10.40.9", _winreg.HKEY_CLASSES_ROOT)
清风无影 2024-10-29 23:49:27

非常适合 Windows 的 hack,效果很好。

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

Very windows specific hack that works okay.

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文