Api扫描RouterOS路由器的线路,并将故障线路写入xlsx表格中

Python API调用 MikroTik RouterOS 实现故障线路监控并写入Excel
本文介绍了一个Python脚本,通过调用RouterOS API获取网络状态,筛选出静态且未禁用的故障线路,将其数量和恢复时间记录到Excel表格中。脚本首先初始化SSL连接,登录设备,然后定期读取路由表并更新故障线路列表。

1.api参考于routeros官方api文档:

API_Python3 - RouterOS - MikroTik Documentationhttps://help.mikrotik.com/docs/display/ROS/API_Python3

2.内嵌routeros路由器命令的api代码如下(api6.py):

#!/usr/bin/python3
import sys, time, binascii, socket, select, ssl
import hashlib
import re


class ApiRos:
    "Routeros api"

    def __init__(self, sk):
        self.sk = sk
        self.currenttag = 0

    def login(self, username, pwd):
        for repl, attrs in self.talk(["/login", "=name=" + username,
                                      "=password=" + pwd]):
            if repl == '!trap':
                return False
            elif '=ret' in attrs.keys():
                # for repl, attrs in self.talk(["/login"]):
                chal = binascii.unhexlify((attrs['=ret']).encode(sys.stdout.encoding))
                md = hashlib.md5()
                md.update(b'\x00')
                md.update(pwd.encode(sys.stdout.encoding))
                md.update(chal)
                for repl2, attrs2 in self.talk(["/login", "=name=" + username,
                                                "=response=00" + binascii.hexlify(md.digest()).decode(
                                                    sys.stdout.encoding)]):
                    if repl2 == '!trap':
                        return False
        return True

    def talk(self, words):
        if self.writeSentence(words) == 0: return
        r = []
        while 1:
            i = self.readSentence();
            if len(i) == 0: continue
            reply = i[0]
            attrs = {}
            for w in i[1:]:
                j = w.find('=', 1)
                if (j == -1):
                    attrs[w] = ''
                else:
                    attrs[w[:j]] = w[j + 1:]
            r.append((reply, attrs))
            if reply == '!done': return r

    def writeSentence(self, words):
        ret = 0
        for w in words:
            self.writeWord(w)
            ret += 1
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值