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地址是否在网络上,如果不打印出来?
从你拥有的开始:
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)