我正在寻找一种通过paramiko在远程服务器上执行脚本的方法,并在写入stdout时接收输出.这些脚本可以运行一个小时左右,但在执行任务时,我想检索打印到stdout的日志消息.我该怎么做呢?

如果在paramiko中无法实现,是否有任何其他模块可以帮助我这样做.

解决方法:

掌握交通工具并生成自己的渠道. channel可用于执行命令,您可以在select语句中使用它来查找何时可以读取数据:

#!/usr/bin/env python

import paramiko

import select

client = paramiko.SSHClient()

client.load_system_host_keys()

client.connect('host.example.com')

transport = client.get_transport()

channel = transport.open_session()

channel.exec_command(COMMAND)

while True:

rl, wl, xl = select.select([channel],[],[],0.0)

if len(rl) > 0:

# Must be stdout

print channel.recv(1024)

标签:python,ssh,paramiko

在使用 Paramiko 执行 远程 命令 时,有时候我们需要设置 一个 超时 时间 ,以确保 命令 在指定 时间 执行 完成。本文将向您展示如何在 Paramiko 模块中设置 执行命令 的超时 时间 。以上就是使用 Paramiko 模块设置 执行命令 超时 时间 的示例代码。通过设置适当的超时 时间 ,您可以确保远程 命令 在规定 时间 执行 完成,从而提高程序的可靠性和稳定性。安装完成后,我们可以开始编写代码来设置 Paramiko 执行命令 超时 时间 。请注意,如果 命令 执行 超过了设置的超时 时间 Paramiko 会引发。方法后,我们可以使用。 转自:blog.csdn.net/vito21/article/details/53319306 import socket,select s=socket.socket() print('s:',s) host=socket.gethostname() port=1234 s.bind((host,port)) s.list 虽然不是最有效的方法,但这应该是可行的。在键盘中断处理程序中,您可以exec_command("killall -u %s tail" % uname)这样:#!/usr/bin/env python 2import paramiko import selectimport timeltime = time.time()# Or use random:# import random# ltime = ... 问题: paramiko 远程 执行命令 ,需要等到 命令 返回信息,如果 命令 执行 时间 较长 ,返回信息就需要等很久方案:1、使用nohup + 待 执行命令 + & ,使用后台 执行 的方式,应该可以快速返回2、设置 paramiko 执行命令 等待超时 时间 stdin, stdout, stderr = self.client.exec_command(cmd,timeout=10,get_pty=True)其... I was trying to execute this saltstack commandcmd = "/usr/local/bin/salt -L 'target' cp.get_dir salt://allapps/V001 /u02/tomcat-8.0.24/8080/webapps/"output = os.popen(cmd).readlines() using python .I h... 有很多主题涉及标题的一部分,但没有任何东西可以完全满足整个事情.我在远程服务器上推送 一个 命令 ,经过很 执行 时间 后需要完整的 输出 ,比如5分钟左右.使用通道我能够设置超时,但是当我读回stdout时,我只得到了一小部分 输出 .解决方案似乎是等待channel.exit_status_ready().这对成功的呼叫起作用,但是失败的呼叫永远不会触发信道超时.在查看了文档之后,我推测这是因为超时仅适用于读... python 中的 Paramiko 模块(实现用户切换) 1. paramiko 介绍   ssh是 一个 协议,OpenSSH是其中 一个 开源实现, paramiko Python 一个 库,实现了SSHv2协议(底层使用cryptography)。   有了 Paramiko 以后,我们就可以在 Python 代码中直接使用SSH协议对远程服务器 执行 操作,而不是通过ssh 命令 对远程服务器进行操作。 paramiko ... 使用SSHClient对象的这个方法 执行 例如ls,pwd等 命令 的时候,都 执行 的还不错。 但是cd /path这个 命令 就有点问题了,发现cd到其他路径下,但是使用pwd发现还是在登录的时候的默认路径,/home/ 相当于没有 执行 cd 命令 ,这个时候就要把后续的想要 执行 命令 和cd 通过 paramiko 模块ssh登录linux,然后用exec_command方法 执行 带有nohup的shell 命令 不生效, python 脚本如下:import paramiko import timessh = paramiko .SSHClient()ssh.set_missing_host_key_policy( paramiko .AutoAddPolicy())ssh.connect('192.16...