使用Python telnetlib配置GNS3三层交换机时退出命令丢失首字符问题
解决Telnet脚本退出GNS3三层交换机时字符丢失的方案
优化命令发送时机与方式
避免设备未处理完前序命令就发送退出指令,改用精准匹配提示符后再发送命令:# 完成配置后,等待配置模式提示符出现 tn.read_until(b"(config)#", timeout=10) # 发送end回到特权模式 tn.write(b"end\n") # 等待特权模式提示符 tn.read_until(b"#", timeout=10) # 发送logout退出会话 tn.write(b"logout\n")也可以尝试拆分发送退出命令的字符,避免首字符被吞:
tn.write(b"e") time.sleep(0.1) tn.write(b"xit\n")检查并调整交换机VTY线路配置
手动登录交换机,查看VTY线路的相关配置:show running-config | section line vty确保没有异常的输入拦截配置,比如可临时调整
exec-timeout为更大值,或添加no logging synchronous测试是否是日志输出干扰了命令接收。设置正确的终端参数
登录后先配置终端参数,避免分页或宽度不足导致字符截断:tn.write(b"terminal length 0\n") tn.read_until(b"#") tn.write(b"terminal width 512\n") tn.read_until(b"#")更换退出命令
用logout替代exit退出Telnet会话,部分IOS交换机对该命令的处理更稳定:# 从配置模式回到特权模式后 tn.write(b"logout\n")
内容的提问来源于stack exchange,提问作者Mystery
相关产品推荐
相关产品推荐

