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
因篇幅问题不能全部显示,请点此查看更多更全内容