当前位置:  开发笔记 > 编程语言 > 正文

在执行Python Paramiko的命令后,我如何保存结果?

如何解决《在执行PythonParamiko的命令后,我如何保存结果?》经验,为你挑选了2个好方法。

如下所示,是否可以保存结果?原因,在第二和第三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执行命令).



1> jfs..:

想象一下,这stdout是一个普通的文件.如果你file.read()第二次打电话,你期望得到什么? - 没有(空字符串),除非文件在外面发生了变化.

要保存字符串:

output = stdout.read()

您可能会发现Fabric更易于使用(它用于paramiko执行命令).



2> 小智..:

您可以尝试使用此通用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

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有