我正在寻找一种通过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...