2010-06-15 53 views
0

我使用paramiko/ssh/python嘗試在遠程服務器上運行命令。當我手動ssh並運行有問題的命令時,我得到我想要的結果。但是,如果我使用下面的python(從本網站的另一個線程中選擇),則沒有返回的數據。如果我將命令修改爲「pwd」或「ls」等更基本的命令,我可以獲得輸出結果。任何幫助表示讚賞。沒有從parmiko/ssh命令獲得輸出

謝謝, 馬特

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) 
+0

那麼,這很大程度上取決於遠程命令的外觀。也許它需要交互式運行(即可能會檢查用戶的終端)。給我們更多關於該命令的信息。 – rbp 2010-06-17 19:51:32

回答

1

我找到了解決,但不一定是根本原因:當創建的paramiko ssh連接,它並沒有在我的主目錄中的遠程服務器上運行我的.bash_profile。所以,我將bash_profile中的命令複製到cmd變量中,從而加載了我認爲會自動加載的各種環境變量。然後命令「customexe ...」按預期返回輸出。