2011-03-15 120 views
0

我需要运行网络扫描以获取连接到网络的PC的计算机名称。 这是在这些系统上运行软件合规性扫描。Python代码扫描网络以获取计算机名称

我们需要系统的名称才能连接到其注册表以获取信息。

我们如何获取计算机名称,或者是他们以任何其他方式连接到网络中的计算机?

+1

“计算机名”是一个非常通用的术语。指定您需要的东西。 (如DNS名称,NetBIOS,WINS等) – 2011-03-15 08:28:38

回答

2

你可能只使用一个IP地址,而不是一个名字。 Windows中需要计算机名称的系统调用通常也会接受数字地址。

例如这两个工作:

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

非常特定的窗口黑客工作正常。

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