Seite 1 von 1

SSH client

Verfasst: Donnerstag 2. September 2010, 08:52
von JonasR
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

Re: SSH client

Verfasst: Donnerstag 2. September 2010, 09:16
von 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.

Re: SSH client

Verfasst: Donnerstag 2. September 2010, 09:19
von JonasR
Erstmal danke für die Antwort,

wie kann ich dann mit dieser Shell weiterarbeiten?

Re: SSH client

Verfasst: Donnerstag 2. September 2010, 17:42
von Leonidas
Du kannst doch einfach die Pfade in Python verwalten und dann einfach explizite Pfadangaben machen.

Re: SSH client

Verfasst: Montag 6. September 2010, 10:06
von JonasR
Ja ich glaube das wäre das einfachste.

Denn mal vielen Dank ;)