2014-02-05 38 views
-1

僅使用標準python 3庫中的模塊,是否可以在計算機使用的同一局域網中查找所有在線IP地址及其主機名?如果是這樣,有人可以提出一個這樣的工作實施?我一直在尋找幾個小時,我一直沒有找到這個實現。對在線IP地址進行Python檢查

任何實現/建議,將深表讚賞

我沒有這個項目的任何實現目前

+0

如果您發佈已編寫的代碼並詳細描述具體問題,它將對我們有所幫助。 – That1Guy

回答

1

要找到本地連接的IP地址,請使用arp -a並保存到文件。

import os 
os.system('arp -a > ipaddresses.tmp') 
f = open('ipaddresses.tmp', 'r') 

現在我們已經列出,我們需要使用正則表達式,因爲有很多是其他垃圾在那裏提取它們的所有IP地址的文件。

ip = f.findall(r'[0-9]+(?:\.[0-9]+){3}', s) 

現在你有一個ip地址數組,你可以ping信息。

希望有所幫助。

+0

當我運行這個時,我得到以下錯誤:Traceback(最近調用最後一次): 文件「C:/Python32/pynotifytest.py」,第4行,在 ip = f.findall(r'[0-9 ] +(?:\。[0-9] +){3}',s) AttributeError:'_io.TextIOWrapper'對象沒有'findall'屬性 – user3129956

+0

我將您的代碼更改爲ip = re.findall(r' [0-9] +(?:\。[0-9] +){3}」,f.read())。當我運行程序時,ip的值是[]。然後我在re.findall行之前打印f.read()。 f.read()返回一個空字符串。我不認爲這個arp -a在我的windows電腦上工作 – user3129956

+0

打開cmd並寫入arp -a來測試 –

0

有在這個問題上如此多的依賴,首先,我想指出的是,每個操作系統都有本地需要IP和主機名的位置,Linux,Windows,OSX,但我設法挖出一篇文章,這似乎是通用的。 http://houseoflaudanum.com/navigate/snippets/discovering-local-ip-addresses-in-python/

+0

謝謝你的建議,但我已經看到了這個頁面,並沒有覺得它非常有用 – user3129956

+0

沒關係,因爲你在問什麼,尋找網絡的低端我建議你看看phyton的socket類http ://docs.python.org/2/library/socket.html –

+0

你有什麼建議可以找到所有使用套接字連接到lan網絡的在線設備嗎? – user3129956