SSH client

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

Hi,

ich möchte ein par Befehle per SSH auf einer Linux Maschine ausführen nun stellt sich mir die Frage wie ich dies in Python am besten realisiere.

Momentan benutze ich Paramiko, damit komme ich noch nicht ganz klar. Ich kann zwar einzelne Befehle senden aber wenn ich nach einem "cd" noch einen befehl in diesem Verzeichnis ausführen will stoße ich momentan an meine Grenzen xD

Code: Alles auswählen

import paramiko

client = paramiko.SSHClient()
client.load_system_host_keys()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

client.connect("serveradress", 22, username="root", password="passwd")
stdin, stdout, stderr = client.exec_command("cd /DIR")
if "No such file or directory" in stderr.readline():
    stdin, stdout, stderr = client.exec_command("mkdir /DIR")
    stdin, stdout, stderr = client.exec_command("cd /DIR")
client.exec_command("cat version")
print "Err: "+stderr.readline()

client.close()
So ich will nun z.B das cat in /DIR ausführen nur wie?

Danke
BlackJack

@JonasRJonasR: Das geht so nicht, weil das aktuelle Arbeitsverzeichnis etwas ist, was pro Prozess verwaltet wird. Wenn Du ein 'cd irgendwas' ausführst, wird auf der anderen Seite eine Shell gestartet, ``cd`` ausgeführt, was das Arbeitsverzeichnis *dieser* Shell verändert, und dann wird die Shell wieder beendet. Das Ändern des Arbeitsverzeichnis einer Shell hat keinen Einfluss darauf, mit welchem Arbeitsverzeichnis eine andere, später gestartete Shell arbeitet.
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

Erstmal danke für die Antwort,

wie kann ich dann mit dieser Shell weiterarbeiten?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Du kannst doch einfach die Pfade in Python verwalten und dann einfach explizite Pfadangaben machen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

Ja ich glaube das wäre das einfachste.

Denn mal vielen Dank ;)
Antworten