J'utilise paramiko/ssh/python pour tenter d'exécuter une commande sur un serveur distant. Quand je ssh manuellement et exécuter la commande en question, j'obtiens les résultats que je veux. Mais si j'utilise le python (co-opté d'un autre thread sur ce site) ci-dessous, il n'y a pas de données retournées. Si je modifie la commande pour qu'elle soit quelque chose de plus basique comme 'pwd' ou 'ls', je peux alors obtenir la sortie. Toute aide est appréciée.ne pas obtenir la sortie de la commande parmiko/ssh
Merci, 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)
Eh bien, cela dépend fortement de ce à quoi ressemble la commande à distance. Peut-être doit-il être exécuté de manière interactive (c'est-à-dire qu'il vérifie peut-être le terminal de l'utilisateur). Donnez-nous plus d'informations sur cette commande. – rbp