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

sch*_*ona 6 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()
Run Code Online (Sandbox Code Playgroud)

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

import subprocess

addresses = subprocess.check_output(['arp', '-a'])
Run Code Online (Sandbox Code Playgroud)

但是使用这段代码我得到了这个:

  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
  .....
Run Code Online (Sandbox Code Playgroud)

我怎么能在这里过滤所以我只能得到mac地址列表?

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

ins*_*get 2

从你拥有的开始:

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)
Run Code Online (Sandbox Code Playgroud)