from netmiko import ConnectHandler from datetime import datetime import time # import logging # logging.basicConfig(level=logging.DEBUG) #开启debug模式 #''' # send_commond send_multiline send_command_expect(兼容旧版) send_multiline_timing send_config_from_file send_config_set # ''' device2 = {"host": "10.10.10.2", # 设备ip地址 必要参数 "device_type":"hp_comware_telnet", # ruijie_os 后面加_telnet 则使用telnet连接 # 设备类型 必要参数 "username": "root", "password": "root", "port":None , #ssh 默认端口22 telnet默认端口23 "session_log":'device_log.log' } cmd2 =''' sys disp cu ''' try: print('开始执行:',datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')) conn = ConnectHandler(**device2) #查看设备配置 #send_command output = conn.send_command(cmd2, read_timeout=20.0,expect_string=r'#')#strip_command=False, strip_prompt=False, # output = conn.send_command_timing(cmd2, read_timeout=20.0) #expect_string=r'#' 华三交换机,要排除这#,否则回显不了 ,且多行命令容易回显不完整 # output = conn.send_config_set(cmd2) 还是使用这个比较好。 print(output) # 解决回显不完整的情况 while '>' not in output[-5:]: # print('回显并未取完...,检测到回显结尾:<', output[-5:], '>') #方法一:再次发送命令 # out = conn.send_command('\t', read_timeout=20.0, expect_string=r'#') # 方法二:接着读回显 ,推荐 out1 = conn.read_channel() # 接着读的回显是空... time.sleep(0.2) # 必须停一下,否则疯狂的读,虽然不影响结果,但读取的空白,会占屏... print(out1) output += out1 if ']' in output[-5:] or '>' in output[-5:]: break # 输出内容 print(output) print('执行完成:', datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')) #断开连接 print(conn.command_echo_read(cmd2,20)) conn.disconnect() print('断开连接') except Exception as e: print(e) print('连接失败...')