Python 通过Ubus Rest API配置MACFilter

首先配置ubus的权限,在/usr/share/rpcd/acl.d/下生成一个文件,内容如下

{
        "superuser": {
                "description": "Super user access role",
                "read": {
                        "ubus": {
                                "*": [ "*" ]
                        },
                        "uci": [ "*" ]
                },
                "write": {
                        "ubus": {
                                "*": [ "*" ]
                        },
                        "uci": [ "*" ]
                }
        }

}

这样就可以用root账号来访问ubus的rest api

python代码如下

class Connection(object):

def __init__(self, server, user, passwd):
self.server = "http://{}/ubus".format(server)
auth_response = self._request("session", "login", username=user, password=passwd)
assert "ubus_rpc_session" in auth_response

self._session_id = auth_response["ubus_rpc_session"]

@property
def session_id(self):
if not hasattr(self, "_session_id"):
return "00000000000000000000000000000000"
return self._session_id

def _request(self, subsytem, method, **params):
request = {"jsonrpc": "2.0",
"id": 1,
"method": "call",
"params": [ self.session_id,
subsytem,
method,
params] }
response = None
with requests.post(self.server, data=json.dumps(request)) as stream:
response = json.loads(stream.text)
if not response or "error" in response:
raise str(response)
if response["result"][0]==0:
if len(response["result"])>1:
return response["result"][1]
else:
return "success"
else:
return "error"


if __name__ == "__main__":
if len(sys.argv) < 4:
print("Usage: {} <OpenWrt_Host> <User> <Pass>]".format(sys.argv[0]))
sys.exit(1)

clients = []
connection = Connection(sys.argv[1], sys.argv[2], sys.argv[3])
print(connection._request("uci", "set", config="wireless", section="@wifi-iface[0]", values={"macfilter":"deny"}))



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值