2012-09-16 3 views
1

Deux jours en python et j'essaie de faire des choses simples mais en difficulté.impression sortie sous-processus python

Quand je lance le script ci-dessous à l'aide de ls l'entrée de commande par exemple, ssh me demande un mot de passe, il crache sur ceci:

<__main__.sshcommand object at 0x7fd0d1136b50> 

Si je commande dur ensemble à l'intérieur de la classe sshcommand (par exemple en remplaçant la commande par 'ls', et l'imprimer, ça marche super bien.

Merci pour votre conseil à l'avance.

import subprocess 

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

command = raw_input("command> ") 

print sshcommand(command) 

Répondre

4

Le problème est que votre code ne stocke pas ou retourner le résultat en aucune façon.

Est-ce que cela doit vraiment être une classe? Sinon, il est beaucoup plus simple en fonction:

import subprocess 

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

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

Si elle doit absolument être une classe:

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

Ahh, je vous remercie beaucoup! – user1675884

1

Définissez une méthode __str__ sur votre classe. Par exemple, vous pouvez écrire

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

qui imprime

ssh localhost "foo bar"