2012-09-16 70 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本地主机 “富巴”