我尝试用ssh登录网络设备,在执行第一个命令后得到了正确的输出,但是在执行第二个命令时出现了奇怪的错误。在import paramiko
paramiko.common.logging.basicConfig(level=paramiko.common.INFO)
paramiko.util.log_to_file('demo_router_simple.log')
try:
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
hostname='192.168.1.1'
username='test'
password='test'
client.connect(hostname,username=username,password=password,look_for_keys = False,allow_agent = False)
stdin, stdout, stderr = client.exec_command('show ip inter b')
print stdout.read()
# error occurs after I execute the second command
stdin, stdout, stderr = client.exec_command('show ip inter b')
print stdout.read()
finally:
client.close()
奇怪的错误如下所示
^{pr2}$
我还打开了路由器上的调试并捕获调试信息*Mar 1 00:17:09.639: SSH2 0: done calc MAC out #11
*Mar 1 00:17:09.639: SSH0: Session terminated normally
R1#
根据这个名为exec_command的方法的解释,这个方法将在服务器上执行一个命令。如果服务器允许,那么通道将直接连接到命令的stdin、stdout和stderr执行。什么时候命令执行完毕后,通道将关闭,不能再使用。如果要执行另一个命令,则必须打开新通道。在
让我困惑的是,为什么exec_命令关闭这个ssh连接而不是关闭通道?有没有其他人和我一样有同样的问题?任何帮助都将不胜感激。在