【发布时间】:2010-07-12 23:29:32
【问题描述】:
是否可以使用 Python(或任何编程语言)查看同一网络上的其他设备?
编辑:为澄清起见,我想做的(只是开始)是显示连接的设备列表及其本地 IP 地址。所以在我的路由器上,它会显示信息:
family_pc,192.168.1.2 工作笔记本电脑,192.168.1.3
我想检索此信息。
【问题讨论】:
标签: python networking device
是否可以使用 Python(或任何编程语言)查看同一网络上的其他设备?
编辑:为澄清起见,我想做的(只是开始)是显示连接的设备列表及其本地 IP 地址。所以在我的路由器上,它会显示信息:
family_pc,192.168.1.2 工作笔记本电脑,192.168.1.3
我想检索此信息。
【问题讨论】:
标签: python networking device
你到底想做什么?
nmap 是一个非常常用的网络扫描工具,这似乎是你想做的。还有一个python-nmap 包,可让您直接在 Python 中轻松使用 nmap。
请详细一点,以便我们为您提供更好的答案,干杯。
【讨论】:
这里有几个选项。
您可以在整个网络地址空间上运行端口扫描,但这非常浪费且不友好。不推荐。
更好的方法是使用DNS-SD / Zeroconf(又名Bonjour)之类的服务发现协议来查询设备。大多数 Linux 和 Mac 系统都会响应,许多网络打印机和其他网络设备也会响应。 Windows 系统不附带 DNS-SD 代理,但可以安装。
DNS-SD 的纯 python 实现是available here。我已经在 Linux、MacOS 和 Windows 上使用过它。
如果您更喜欢 Microsoft 方法,您可以尝试 UPnP 的发现功能,但我无法保证它的效果如何或有多少系统会响应。
【讨论】:
如果您不介意使用一些第三方软件,您可以使用Netresview,它在 Windows 系统上运行良好,避免重新发明轮子之类的。你可以做这种事情。
os.system('NetResView.exe /DisplayComputers 1 /RetrieveIPAddresses /stext ipfile')
my_file = open('ipfile')
for line in my_file :
print myfile.readline()
【讨论】: