не получается вывод команды parmiko / ssh - PullRequest
0 голосов
/ 16 июня 2010

Я использую paramiko / ssh / python для запуска команды на удаленном сервере. Когда я ssh вручную и запускаю соответствующую команду, я получаю результаты, которые я хочу. Но если я использую питон (кооптированный из другого потока на этом сайте) ниже, никаких возвращаемых данных нет. Если я изменю команду на что-то более простое, например, 'pwd' или 'ls', я смогу получить вывод. Любая помощь приветствуется.

Спасибо, Matt

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)

1 Ответ

1 голос
/ 23 июня 2010

Я нашел исправление, хотя и не обязательно по основной причине: когда paramiko установил соединение ssh, он не запускал мой bash_profile в моем домашнем каталоге на удаленном сервере. Итак, я скопировал команды из bash_profile в переменную cmd и таким образом загрузил различные переменные окружения, которые, я думал, загрузились бы автоматически. Затем команда «customexe ...» вернула вывод, как и ожидалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...