ich befasse mich gerade etwas mit klassen und habe da anscheinend ein kleines versändnissproblem:
ich möchte auf einem entfernten host, per ssh zugreiffen, befehle ausführenlassen und den output auswerten bzw. anzeigen lassen.
mit paramiko hab ich dafür auch schon das passende werkzeug gefunden.
in einer funktion verpackt klappt auch das importieren und nutzen des modules.
jetzt möchte ich nicht jedesmal die verbindung neu initialisieren müssen wenn ich mehrere abfragen hintereinander mache. da die reihnfolge variiert ist es auch nicht da ziel alle möglichen variationen in unterschiedliche funktionen zu packen.
also eine klasse. (ich hoffe, dass das der richtige weg ist)
Code: Alles auswählen
import paramiko
class Ssh(object):
def __init__(self, host, sysuser):
paramiko.util.log_to_file('paramiko.log')
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname=host, username=sysuser, key_filename='~/.ssh/id_rsa')
def get_current_auth(self):
stdin, stdout, stderr = client.exec_command('cat ~/.ssh/authorized_keys')
type(stdin)
res = stdout.readlines()
return res
def __del__(self):
client.close()
wenn ich die methode "get_current_auth" ausführen möchte, bekomme ich die meldung, dass "client" nicht definiert ist.
das sind meine ersten gehversuche mit klassen, daher hab ich bestimmt irgendwo einen gravierenden denkfehler.
kann ich meine vorstellung überhaupt mit einer klasse umsetzen ?
gruss naked