Python获取mac地址列表并将它们与文件列表进行比较

标签 python mac-address

我是Python初学者,希望您能帮我解决这个问题。

我有一个写在文件中的 mac 地址列表。我需要获取网络上的 mac 地址列表,将它们与文件中的地址进行比较,然后在 stdout 中打印文件中未在网络地址列表中找到的地址。

最后用这些地址更新文件。

现在我设法读取了一个我作为参数提供的文件:

import sys

with open(sys.argv[1], 'r') as my_file:
   lines = my_file.read()

my_list = lines.splitlines()

我正在尝试通过从 python 运行进程 arp 来读取 mac 地址:

import subprocess

addresses = subprocess.check_output(['arp', '-a'])

但是通过这段代码我得到了这个:

  Internet Address      Physical Address      Type
  156.178.1.1           5h-c9-6f-78-g9-91     dynamic
  156.178.1.255         ff-ff-ff-ff-ff-ff     static
  167.0.0.11            05-00-9b-00-00-10     static
  167.0.0.123           05-00-9b-00-00-ad     static
  .....

我如何在此处进行过滤以便仅获取 mac 地址列表?

或者我可以像这样检查两个列表以查看文件中的 mac 地址是否在网络上,如果不在则将其打印出来?

最佳答案

从你拥有的开始:

networkAdds = addresses.splitlines()[1:]
networkAdds = set(add.split(None,2)[1] for add in networkAdds if add.strip())
with open(sys.argv[1]) as infile: knownAdds = set(line.strip() for line in infile)

print("These addresses were in the file, but not on the network")
for add in knownAdds - networkAdds:
    print(add)

关于Python获取mac地址列表并将它们与文件列表进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33765539/

相关文章:

python - 从 3D 数组中删除与从 3D 数组中删除的行相对应的行

python - 在 Python 中连接到 PostGreSQL 7.3 数据库

python - 为什么在第二次导入时导入错误变为 "cannot import name"?

python - 如何在步骤函数 Lambda 调用中将上下文对象与任务输入结合起来?

iphone - iPhone 的 MAC 地址是唯一的,它会改变吗?

android - 如何使用python在android中获取mac地址

c# - 如何确定实际物理网卡的 MAC 地址——而不是 VPN (.NET C#) 创建的虚拟网络接口(interface)

java - 查找手机中打开的UDID和mac地址

ios - iOS7 中的 objective-c iOS 设备 ID

python - F2Py:使用通过 Python 调用的 Fortran 中的可分配数组