2012-09-16 68 views
1

兩天進入python,我試圖做一些簡單的事情,但掙扎。打印輸出python子進程

當我運行下面使用LS作爲例子命令輸入腳本,SSH提示我輸入密碼,然後吐出這樣的:

<__main__.sshcommand object at 0x7fd0d1136b50> 

如果sshcommand類裏面我硬set命令(例如用'ls'替換命令)並打印出來,效果很好。

感謝您提前給出的所有建議。

import subprocess 

class sshcommand(object): 
    def __init__(self, command): 
     subprocess.check_output(['ssh', 'localhost', command]).splitlines() 

command = raw_input("command> ") 

print sshcommand(command) 

回答

4

的問題是,你的代碼不存儲或返回以任何方式結果。

這真的需要成爲一個班嗎?如果不是,它是作爲一個功能簡單得多:

import subprocess 

def sshcommand(command): 
    return subprocess.check_output(['ssh', 'localhost', command]).splitlines() 

command = raw_input("command> ") 
print sshcommand(command) 

如果絕對必須是一個類:

import subprocess 

class sshcommand(object): 
    def __init__(self, command): 
     self.result = subprocess.check_output(['ssh', 'localhost', command]).splitlines() 

    def __str__(self): 
     return self.result 

command = raw_input("command> ") 
print sshcommand(command) 
+0

啊,太感謝你了! – user1675884

1

在您的課堂上定義__str__方法。例如,你可以寫

import subprocess 

class sshcommand(object) 
    def __init__(self, command): 
     self.command = command 
     subprocess.check_output(['ssh', 'localhost', command]).splitlines() 

    def __str__(self): 
     return 'ssh localhost "%s"' % command 

command = raw_input("command> ") 

print '%s' % sshcommand('foo bar') 

它打印

SSH本地主機 「富巴」