2009-08-26 5 views
0

Ich beschloss, Python als neue Sprache zu lernen. Das erste, was ich tun möchte, ist ein Skript zu schreiben, das es mir ermöglicht, Dienste von meinem lokalen Rechner aus remote neu zu starten. Wie würde ich dies erreichen, wenn der Remote-Computer zur Anmeldung einen Benutzernamen und ein Passwort benötigt? Ich brauche keine vollständige Lösung für mich, aber vielleicht ein paar Hinweise darüber, welche Bibliotheken ich verwenden soll oder welche Probleme ich beim Schreiben des Skripts lösen muss.Wie kann ein Dienst auf einem passwortgeschützten Computer mithilfe von Python remote neu gestartet werden?

EDIT: All Remote-Rechner mit Windows 2003

+0

Wie werden Sie auf die Remote-Maschinen zugreifen? Über SSH oder vielleicht ein anderes Mittel? –

+0

Also, wie greifen Sie darauf (mit welchem ​​Mechanismus)? –

Antwort

3

Menschen in der Regel paramiko als Bibliothek empfehlen ssh zu tun (und ich gehe davon aus, dass Sie ssh müssen in den Remote-Rechner zu bekommen). Es gibt eine gute tutorial dafür.

Bearbeiten: Unter Windows ist der einfachste Weg wahrscheinlich SysInternals psservice Dienstprogramm zu verwenden, mit os.system aufgerufen werden; Dies kann einen Remote-Dienst starten und akzeptiert Anmeldeinformationen. Wenn Sie es direkt in Python machen wollen, brauchen Sie win32service.StartService. Vorher müssen Sie den Remotedienstmanager und anschließend den Remotedienst öffnen. Vorher müssen Sie sich als Benutzer ausgeben, für den Sie die Operation ausführen möchten, siehe example.

+0

os.system() sollte nicht mehr verwendet werden. Verwenden Sie stattdessen das Subprozessmodul. –

+0

Probieren Sie das neuere WMI-Modul (https://pypi.python.org/pypi/WMI/), viel benutzerfreundlicher (Sie können Dienste auch ohne Ärger stoppen). – Anthony

1

Auf welcher Art von Betriebssystem läuft Ihre Remote-Maschine? Wenn es Linux ist, führen Sie ssh(1) mit der subprocess module.

Wenn es Fenster ist, dann erhalten Sie die win32 extensions. Sie ermöglichen Ihnen, Windows-Funktionen aufzurufen. Es sollte eine API geben, um den Zugriff auf Dienste zu ermöglichen. Ist dies nicht der Fall, gibt es ein Tool namens sc (docs), das Sie mit dem Subprozessmodul ausführen können.

+0

Die Computer verwenden Windows 2003 – Draco

3

Schauen Sie sich Fabric an, die auf paramiko basiert. Dies ist wirklich ein gutes Werkzeug, um Remote-Aufgaben mit Python zu automatisieren.

Fabric Documentation wird Ihnen zeigen, wie einfach es zu verwenden ist.

1

Welches Betriebssystem für die Zielcomputer? Wenn "Dienst" der "Windows NT-Dienst" ist und Ihr lokaler Computer auch Windows ist, würde ich IronPython als Implementierung der Python-Sprache verwenden und direkt in die WMI-Funktionen im .net System.Management-Namespace aufrufen für remote admin so.

+0

Die Computer verwenden Windows 2003 – Draco