如下所示,是否可以保存结果?原因,在第二和第三stdout.read()我无法达到结果.
import paramiko import os dssh = paramiko.SSHClient() dssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) dssh.connect('192.168.1.250', username='root', password='pass') import os stdin, stdout, stderr = dssh.exec_command('ifconfig') print stdout.read() print ('Sleeping 2 seconds!') os.system('sleep 2') stdin, stdout, stderr = dssh.exec_command('ls -l') print stdout.read() print stdout.read() print stdout.read() dssh.close()
jfs.. 26
想象一下,这stdout
是一个普通的文件.如果你file.read()
第二次打电话,你期望得到什么? - 没有(空字符串),除非文件在外面发生了变化.
要保存字符串:
output = stdout.read()
您可能会发现Fabric更易于使用(它用于paramiko
执行命令).
想象一下,这stdout
是一个普通的文件.如果你file.read()
第二次打电话,你期望得到什么? - 没有(空字符串),除非文件在外面发生了变化.
要保存字符串:
output = stdout.read()
您可能会发现Fabric更易于使用(它用于paramiko
执行命令).
您可以尝试使用此通用API
def ssh_ctrl(ip, user, password,cmd): ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) try: ssh.connect(hostname=ip, username=user, password=password, timeout=tout, compress = True,look_for_keys=False, allow_agent=False) except (socket.error,paramiko.AuthenticationException,paramiko.SSHException) as message: print "ERROR: SSH connection to "+ip+" failed: " +str(message) sys.exit(1) stdin, stdout, ssh_stderr = ssh.exec_command(cmd) out = stdout.read() stdin.flush() ssh.close() return out