Dwa dni w pythonie i staram się robić proste rzeczy, ale walczą.

Gdy uruchomię skrypt poniżej za pomocą LS jako przykładowego wejścia poleceń, SSH monituje mnie o hasło, a następnie wypluwa to:

<__main__.sshcommand object at 0x7fd0d1136b50>

Jeśli ciężko ustawić polecenie w klasie SSHCOMMAND (na przykład zastępowanie polecenia za pomocą "LS") i wydrukuj go, działa świetnie.

Dzięki za wszelką poradę z góry.

import subprocess

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

command = raw_input("command> ")

print sshcommand(command)
1
user1675884 16 wrzesień 2012, 20:11

2 odpowiedzi

Najlepsza odpowiedź

Problem polega na tym, że twój kod nie przechowuje ani nie zwraca w żaden sposób.

Czy to naprawdę musi być klasą? Jeśli nie, jest znacznie prostsza jako funkcja:

import subprocess

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

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

Jeśli absolutnie musi być klasą:

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)
4
Tristan Occhipinti 16 wrzesień 2012, 18:42

Zdefiniuj {X0}} Metoda w swojej klasie. Na przykład możesz pisać

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')

Który drukuje

ssh localhost "foo bar"

1
Adam Mihalcin 16 wrzesień 2012, 16:53