1

两天进入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)
4

2 回答 2

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)
于 2012-09-16T18:42:43.760 回答
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“富吧”

于 2012-09-16T16:53:15.493 回答