2014-02-05 40 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