2011-03-15 67 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