2010-07-12 56 views
2

是否可以查看Python中同一网络上的其他设备(或任何编程语言)?以编程方式在Python中查看网络上的其他计算机

编辑:为了澄清,我想要做什么(刚开始)是显示连接的设备列表及其本地IP地址。所以,在我的路由器,它会显示信息:

family_pc,192.168.1.2 work_laptop,192.168.1.3

我想检索此信息。

回答

6

你想要做什么?

nmap是一个非常常见的扫描网络工具,看起来像你想要做的。还有一个python-nmap软件包,可让您轻松地在Python内直接使用nmap。

请更详细,以便我们给您更好的答案,欢呼。

+0

原始评论已更新 – tipu 2010-07-12 23:40:22

+0

nmap会为你做到这一点,所以也许像我提到的那样查看python-nmap。 – Bartek 2010-07-12 23:41:06

3

这里有几个选项。

您可以在整个网络地址空间上运行端口扫描,但这非常浪费和不友好。我不推荐它。

更好的方法是查询使用服务发现协议的设备,如DNS-SD/Zeroconf(又名Bonjour)。大多数Linux和Mac系统都会响应,许多网络打印机和其他网络设备也会如此。 Windows系统不附带DNS-SD代理,但可以安装一个。

DNS-SD的纯Python实现是available here。我在Linux,MacOS和Windows上使用过它。

如果您更喜欢微软的方法,您可以尝试UPnP的发现功能,但我无法保证它的工作效果如何,或者有多少系统会作出响应。

+0

我认为现在纯粹的python实现是[here](https://github.com/paulsm/pyzeroconf)。 – Gerrat 2015-03-13 19:39:04

+0

该回购看起来放弃了。这里有一些新的来源: https://github.com/jstasiak/python-zeroconf https://github.com/wmcbrine/pyzeroconf https://pypi.python.org/pypi/zeroconf/ – 2015-03-13 23:42:25

-1

如果您不介意使用小小的第三方软件,您可以使用Netresview,它可以很好地在Windows系统上运行,避免重新发明轮子等等。你可以做这种事情。

os.system('NetResView.exe /DisplayComputers 1 /RetrieveIPAddresses /stext ipfile') 
my_file = open('ipfile') 
for line in my_file : 
    print myfile.readline() 
相关问题