1

Python を使い始めて 2 日目ですが、いくつかの簡単なことをしようとしていますが、苦労しています。

コマンド入力の例として 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 "foo バー"

于 2012-09-16T16:53:15.493 に答える