2012-06-08 2 views
4

Я ищу способ выполнить скрипт на удаленном сервере через paramiko и получить выход обратно, поскольку он написан на stdout. Эти скрипты могут запускаться в течение часа или около того, но по мере выполнения задачи я хочу получить сообщения журнала, напечатанные на стандартный вывод. Как мне это сделать?Выполнение долговременной команды через paramiko

Если это невозможно в paramiko, есть ли какой-либо другой модуль, который может мне помочь.

ответ

4

Получите удержание транспорта и создайте собственный канал. channel может быть использован для выполнения команды, и вы можете использовать его в операторе отбора, чтобы узнать, когда данные могут быть считаны:

#!/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) 

Источник: https://stackoverflow.com/a/9470642/286937

+3

Как выйти после завершения команды ... в то время как True будет продолжать читать. – cfpete

Смежные вопросы