ENSP自动化运维设计和部署,python管理ensp设备内容

在设计和部署ENSP(Enterprise Network Simulation Platform,企业网络仿真平台)的自动化运维系统时,Python作为一个功能强大的编程语言,能够极大地提高运维的效率和准确性。以下是对该过程的一个扩展描述,包括ENSP设备内容的Python管理。

目标

  • 实现网络设备的快速配置、监控、故障排查和自动化升级。
  • 简化网络运维流程,降低人为错误率。

设计原则

  • 模块化:将不同功能的代码组织成独立的模块,便于维护和扩展。
  • 标准化:遵循统一的配置和管理标准,确保不同设备之间的兼容性。
  • 可扩展性:支持新设备和新技术的快速集成。
if __name__ == "__main__":
    # 创建一个控制台对象
    console = Console()
    
    # 解析命令行参数
    cmd_args = cmdArgsParser()
    
    # 根据命令行参数生成主机列表
    lst_host = [i for i in range(int(cmd_args.num))]
    
    # 检查输出目录是否存在,如果不存在则创建
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)
    
    # 如果指定了保存目录,则在输出目录下创建该目录
    if cmd_args.savedir:
        if not os.path.exists(f'{output_dir}/{cmd_args.savedir}'):
            os.makedirs(f'{output_dir}/{cmd_args.savedir}')
        output_dir = f'{output_dir}/{cmd_args.savedir}'
    
    # 如果指定了路由器列表,则将主机列表更新为指定的路由器列表
    if cmd_args.routers:
        lst_host = [int(i) - 1 for i in str(cmd_args.routers).split(",")]
    
    # 设置是否显示详细信息的标志
    verbose = bool(cmd_args.verbose)
    
    # 如果指定了IP地址,则使用指定的IP地址作为连接目标
    if cmd_args.ip != "":
        HOST = cmd_args.ip
    
    # 如果指定了端口号,则使用指定的端口号进行连接
    if cmd_args.port:
        PORT = cmd_args.port
    
    # 遍历主机列表,依次连接到每个主机
    for i in lst_host:
        inc = int(i)
        
        # 打印连接信息
        console.rule(characters="=", style='white')
        console.print(f'[magenta]Connect to eNSP: [orange1 bold]{HOST} port: {int(PORT) + inc}')
        console.rule(characters="=", style='white')
        
        try:
            # 建立Telnet连接
            tn = telnetlib.Telnet(HOST, int(PORT) + inc)
            
            # 获取主机名
            namehost = get_host_name()
            
            # 设置提示符
            bprompt = [bytes(f'<{namehost}>', 'utf-8')]
            bpromptsys = [bytes(f'[{namehost}]', 'utf-8')]
            
            # 设置终端长度
            set_terminal_length()
            
            # 如果指定了保存配置选项,则获取配置并保存到文件中
            if cmd_args.save:
                get_configuration(namehost.lower())
                time.sleep(sleep_time)
            
            # 如果指定了执行命令选项,则发送命令并打印响应结果
            if cmd_args.cmd:
                console.print(f'Run cmd: {cmd_args.cmd}')
                resp = send_command(cmd_args.cmd, bprompt)
                console.print(f'{resp}')
            
            # 如果指定了写入配置选项,则保存配置到文件中
            if cmd_args.write:
                save_configuration()
            
            # 关闭Telnet连接
            tn.close()
        except Exception as error:
            # 打印异常信息
            console.print(f'{error}')-n 或 --num:指定路由器/交换机的总数量。默认值为10。
-c 或 --cmd:在路由器/交换机上运行的命令。默认值为空字符串。
-s 或 --save:将配置保存到文本文件中。如果指定此选项,则默认值为True。
-d 或 --dirsave:输出目录中子目录的名称,用于保存配置。默认值为None。
-w 或 --write:将配置写入路由器/交换机上的闪存。如果指定此选项,则默认值为False。
-v 或 --verbose:显示一些调试信息。如果指定此选项,则默认值为False。
-p 或 --port:路由器/交换机的第一个端口号。默认值为2001。
-r 或 --routers:一个包含路由器(数字)的列表。默认值为空字符串。

启动:docker-compose up -d

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值