10,887
社区成员




求助, 想要写一段代码,实现telnet 23.1.1.1设备后,执行show run命令,并把结果保存在test。txt文件中。 下面的代码提示找不到文件,百度也没找到解决办法
import telnetlib
host = "23.1.1.1"
user = "7604"
password = "ciscocisco"
tn = telnetlib.Telnet(host)
tn.read_until(b"Username: ")
tn.write(user.encode('ascii') + b"\n")
tn.read_until(b"Password: ")
tn.write(password.encode('ascii') + b"\n")
tn.write(b"enable\n")
tn.write(b"cisco\n")
tn.write(b"show run\n")
import subprocess
result = subprocess.run(['show', 'run'], capture_output=True, text=True)
result = tn.read_all().decode('ascii')
with open('session.txt', 'w') as f:
f.write(result)
代码中存在几个问题。首先,你想将结果保存在test.txt文件中,但实际上你在代码中使用了session.txt。其次,subprocess.run(['show', 'run']...)这行代码似乎是多余的,因为你已经通过telnet发送了show run命令。你应该删除这行代码,因为它会尝试在本地执行命令,而不是在远程设备上。正确的做法应该是仅依赖tn.write(b"show run\n")和result = tn.read_all().decode('ascii')来获取并保存结果
哈哈,没找到文件报错,应该是open语句的事。可能属性少了一个设置(控制打开方式的属性应该有一个代表“如果没找到文件就创建一个”的)。