0

paramiko / ssh / pythonを使用して、リモートサーバーでコマンドを実行しようとしています。手動でsshを実行し、問題のコマンドを実行すると、希望する結果が得られます。しかし、以下のpython(このサイトの別のスレッドから採用)を使用すると、返されるデータはありません。コマンドを「pwd」や「ls」などのより基本的なものに変更すると、出力を取得できます。どんな助けでも大歓迎です。

ありがとう、マット

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)
4

1 に答える 1

1

必ずしも根本的な原因ではありませんが、修正が見つかりました。paramiko が ssh 接続を作成したときに、リモート サーバーのホーム ディレクトリで bash_profile が実行されませんでした。そこで、コマンドを bash_profile から cmd 変数にコピーして、自動的にロードされると思われるさまざまな環境変数をロードしました。次に、コマンド「customexe ...」は期待どおりの出力を返しました。

于 2010-06-23T16:11:30.883 に答える