我正在尝试创建一个项目,该项目扫描我的网络中的MAC地址,并允许它们或禁止它们在我的本地网络中使用。我编写此脚本是为了熟悉re和pynetgear模块以完成此操作,因为我计划使用这些地址存储数据以确定哪个设备是哪个设备。我尝试过的所有方法都不起作用,或者我尝试在此处和其他资源上查找问题,但到目前为止,还没有人帮助过我。
我尝试查看正则表达式的文档,但无法弄清楚这个问题是什么。一直到设备的第一个代码都在其MAC正常工作,称为TypeError。
from pynetgear import Netgear
import re
netgear = Netgear(password='password')
devices = netgear.get_attached_devices()
MAC = re.search(r"mac=..:..:..:..:..:..", devices)
print(MAC.group(0))
Traceback (most recent call last):
File "/home/z33k/Desktop/python/adhdResearch.py", line 8, in <module>
MAC = re.search(r"mac=..:..:..:..:..:..", devices)
File "/usr/lib/python2.7/re.py", line 146, in search
return _compile(pattern, flags).search(string)
TypeError: expected string or buffer
答案 0 :(得分:2)
我认为您根本不需要正则表达式。
根据PyNetgear docs,get_attached_devices
返回一个命名元组列表。您将需要遍历列表并打印mac值:
for item in devices:
print(item.mac)
答案 1 :(得分:0)
re.search需要一个字符串或缓冲区,但是devices是一个包含namedtuple的列表。
您可以在源代码中看到自己的内容:
打印出MAC地址:
for device in devices:
print(device.mac)
不幸的是,关于允许或禁止个人地址,我不知道。