我是初学者,尝试用SSH编写基本代码,我已经尝试过所有无法调试的东西,我的代码如下:
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
print ("1")
ssh.connect('196.5.5.6', username='abc', password='abc')
print ("2")
stdin, stdout, stderr = ssh.exec_command('show version')
print ("3")
output= stdout.readlines()
print ("4")
print(output)
我得到的输出是1
2
3
在4,它被卡在某处,有问题,我无法获取数据,请帮助任何人。代码只在输出步骤挂起。解决方案完全相同。
答案 0 :(得分:0)
您不需要readlines(
上的stdin
}。您可以直接打印。 readlines()
期望打开文件并从文件中读取。而stdin
,stdout
,stderr
不是文件,而是字符串块(或paramiko通道中使用的字符串缓冲区)。如果您检查stdin
,stdout
,stderr
的类型,您会发现<class 'paramiko.channel.ChannelFile'>
,这些文件不完全是文件,但是文件类似于创建用于存储缓冲区的对象帕拉米科频道。
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
print 1
ssh.connect('196.5.5.6', username='abc', password='abc')
print 2
stdin, stdout, stderr = ssh.exec_command('show version')
print 3
output= stdin
print 4
print(output)
print '---', stdout
print '---==', stderr
答案 1 :(得分:0)
你应该输入命令试试这个
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
print ("1")
ssh.connect('ip', username='user', password='pass')
print ("2")
stdin, stdout, stderr = ssh.exec_command('show version')
print ("3")
stdin,stdout,stderr = ssh.exec_command("ls /")
print stdout.readlines()