Comment redémarrer à distance un service sur un mot de passe machine protégée en utilisant Python?

StackOverflow https://stackoverflow.com/questions/1332853

  •  19-09-2019
  •  | 
  •  

Question

J'ai décidé d'aborder Python comme une nouvelle langue à apprendre. La première chose que je veux faire est le code d'un script qui me permettra de redémarrer à distance des services sur d'autres machines de ma machine locale. Comment puis-je arriver lorsque la machine distante nécessite un nom d'utilisateur et mot de passe pour se connecter? Je ne suis pas besoin d'une solution complète à donner à moi, mais peut-être quelques conseils sur ce que je devrais utiliser les bibliothèques ou les problèmes je dois aborder lors de l'écriture du script.

EDIT: Toutes les machines distantes utilisent Windows 2003

Était-ce utile?

La solution

Les gens recommandent généralement paramiko comme une bibliothèque pour faire ssh (et je suppose que vous besoin ssh pour entrer dans la machine distante). Il y a un bon tutoriel pour cela.

Modifier : Sur les fenêtres, le plus simple est sans doute d'utiliser Sysinternals l'utilité de psservice, à appeler avec os.system; cela peut démarrer un service à distance, et accepte l'ouverture de session des informations d'identification.

Si vous voulez le faire directement en Python, vous avez besoin win32service.StartService . Avant cela, vous devez ouvrir le gestionnaire de services à distance, puis le service à distance. Avant cela, vous avez besoin d'usurper l'identité de l'utilisateur comme lequel vous souhaitez effectuer l'opération, voir le exemple .

Autres conseils

Regardez Wich est basé sur paramiko . C'est vraiment un bon outil pour automatiser des tâches à distance avec python.

Documentation tissu vous montrera comment il est facile à utiliser.

Quel type de système d'exploitation est votre machine en marche à distance? Si c'est Linux, exécutez ssh(1) en utilisant subprocess Module .

Si ses fenêtres, puis obtenir le win32 . Ils vous permettent d'appeler des fonctions Windows. Il devrait y avoir une API pour permettre aux services d'accès. Si elles ne le font pas, il y a un outil appelé sc ( docs ) que vous pouvez utiliser avec le module de sous-processus.

Quel système d'exploitation pour les machines cibles? Si « service » est « service Windows NT », et votre machine locale est également en charge Windows, j'utiliser IronPython comme la mise en œuvre du langage Python et appeler directement dans les installations WMI dans l'espace de noms System.Management .net - ils sont destinés pour administration à distance comme ça.

Sur Windows, le maintenant est fantastique pour cela. Module wmi

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top