Python 无法从parmiko/ssh命令获取输出
我正在使用paramiko/ssh/python尝试在远程服务器上运行命令。当我手动ssh并运行相关命令时,我会得到想要的结果。但是,如果我使用下面的python(从本站点的另一个线程中选择),则不会返回任何数据。如果我将命令修改为更基本的命令,如“pwd”或“ls”,那么我就可以得到输出。感谢您的帮助 谢谢, 马特Python 无法从parmiko/ssh命令获取输出,python,ssh,paramiko,Python,Ssh,Paramiko,我正在使用paramiko/ssh/python尝试在远程服务器上运行命令。当我手动ssh并运行相关命令时,我会得到想要的结果。但是,如果我使用下面的python(从本站点的另一个线程中选择),则不会返回任何数据。如果我将命令修改为更基本的命令,如“pwd”或“ls”,那么我就可以得到输出。感谢您的帮助 谢谢, 马特 我找到了一个修复方法,但不一定是根本原因:当paramiko创建ssh连接时,它没有在远程服务器的主目录中运行我的bash_配置文件。因此,我将bash_概要文件中的命令复制到cm
我找到了一个修复方法,但不一定是根本原因:当paramiko创建ssh连接时,它没有在远程服务器的主目录中运行我的bash_配置文件。因此,我将bash_概要文件中的命令复制到cmd变量中,从而加载了我认为会自动加载的各种环境变量。然后命令“customexe…”按预期返回输出。这在很大程度上取决于远程命令的外观。可能它需要以交互方式运行(即,可能它检查用户的终端)。给我们更多关于这个命令的信息。
import paramiko
import time
import sys, os, select
import select
hostname='10.15.27.166'
hostport=22
cmd='tail -f /x/web/mlog.txt' #works
#cmd='customexe -args1 -args2' #doesn't work
client = paramiko.SSHClient()
client.load_system_host_keys()
client.connect(hostname=hostname, username=username, password=password)
transport = client.get_transport()
channel = transport.open_session()
channel.exec_command(cmd)
while True:
rl, wl, xl = select.select([channel],[],[],0.0)
if len(rl) > 0:
# Must be stdout
print channel.recv(1024)
time.sleep(1)