【SecureCRT支持的python脚本,遍历设备信息】

脚本功能说明:

        此脚本目的是在设备上查看所有显式命令能否正常执行。采用命令提示符的方式获取回显信息,随后解析回显信息后与上一级提示信息组合成新的命令,循环迭代直到完成命令收集。收集到所有信息后再依次下发,同时将收集的信息记录到文本中。

脚本使用说明:
1.脚本有两种方式全局show:
  通过show ?命令全局识别,命令组合的最大检查层级是10级;
  从mpu_cmd、lpu_cmd、sfu_cmd的txt文件中直接读取命令,此文件要么继承要么用前一个方法生成;
  脚本执行前通过弹窗选取命令获取方式,read表示直接读取,show表示通过命令获取;
2.脚本涵盖mpu、lpu、sfu三种模式的命令遍历,也可通过调整explore_commands("lpu","show")修改查看命令;

3.在SecureCRT上连接设备后再运行脚本;

文件说明:
   1.x_ready_cmd--mpu|lpu|sfu上通过命令提示符?获取的无报错命令;
   2.x_dis_cmd--mpu|lpu|sfu上通过命令提示符?获取的报无效或unknown的命令,只记录不执行;
   3.x_cmd--用于存储mpu|lpu|sfu上可执行的命令集,需要在1收集完后手动备份生成;
   4.x_result--用于存储mpu|lpu|sfu上执行命令的回显信息。

源码:

# $language = "Python"
# $interface = "1.0"

import re
import random
import os
import SecureCRT

def parse_echo_and_build_dict(echo):
    """解析命令回显并构建字典"""
    crt.Screen.Send("\n")
    cmd_dict = {}
    lines = echo.split('\n')
    for line in lines:
        parts = line.split()
        if "#" in line:
            continue
        if len(parts)==0:
            continue
        if parts != "":
            key=parts[0]
            value=""
            for one in range(len(parts)):
                if one>0:
                    value=value+" "+parts[one]
            cmd_dict[key] = value
    return cmd_dict

def resolve_value(key, value):
    """根据键值对应用取值规则"""
    if re.search(r'<\d+-\d+>',key):
        result = extract_numbers(key)
    elif re.search(r'<\d+-\d+,\d+>',key):
        result = extract_numbers(key)
    elif re.search(r'<\d+,\d+>',key):
        result = extract_numbers(key)
    elif "WORD" in key and "address" in value.lower():
        result = "127.0.0.1"
    elif "WORD" in key and "characters" in value.lower():
        result = "asfwrc"
    elif "LINE" in key and "characters" in value.lower():
        result = "asfwrc"
    elif "WORD" in key and "name" in value.lower():
        result = "guest"
    elif "WORD" in key and "password" in value.lower():
        result = "guest"
    elif "STRING" in key:
        result = "lhkfghja"
    elif "X:X:X:X::X" in key:
        result = "128::1"
    elif "A.B.C.D" in key and "address" in value.lower():
        result = "127.0.0.1"
    elif "NUMBER" in key and "number" in value.lower():
        numbers = []
        numbers.extend(range(1, 16))
        result = numbers
    elif "NUMBER" in key:
        result = "3"
    elif "configure" in key or "connect" in key or "filesystem" in key or "exit" in key:
        result = "skip"
    elif re.search(r'<\d+>',key):
        result = extract_numbers(key)
    else:
        result = key
    return result

def extract_numbers(input_str):
    # 使用正则表达式提取尖括号内的内容
    match = re.search(r'<(.*?)>', input_str)
    if match:
        content = match.group(1)
        
        # 分割内容,处理数字和可能的区间
        parts = content.split(',')
        numbers = []
        for part in parts:
            # 检查是否为区间
            if '-' in part:
                start, end = map(int, part.split('-'))
                if end >10:
                    if end &g

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值