进入python两天后,我正在努力做一些简单的事情但是还在挣扎。
当我使用ls作为示例命令输入运行下面的脚本时,ssh会提示我输入密码,然后它会吐出这个:
<__main__.sshcommand object at 0x7fd0d1136b50>
如果我在sshcommand类中硬设置命令(例如用'ls'替换命令),并打印它,它就会很好。
提前感谢所有建议。
import subprocess
class sshcommand(object):
def __init__(self, command):
subprocess.check_output(['ssh', 'localhost', command]).splitlines()
command = raw_input("command> ")
print sshcommand(command)
答案 0 :(得分: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)
答案 1 :(得分: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 localhost“foo bar”