Comment démarrer / arrêter un service Windows via un script bash Linux?

3

Je souhaite créer un script qui sera lancé via un serveur SSH pour démarrer / arrêter un service Windows. L'utilisateur SSH fait partie du groupe d'administrateurs. Cependant, lorsque j'exécute le script, un message d'erreur m'indique que le service ne peut pas être démarré.

Comment puis-je m'assurer que mon script est lancé avec des privilèges d'administrateur? J'ai fait des scripts similaires sous Linux en utilisant sudo service myservice start/stop. Je cherche un équivalent dans Windows, si une telle chose existe.

Mon shell ps1 ressemble à ceci:

function start() { Start-Service MyService // verify service started here }

function stop() { Stop-Service MyService // verify service stopped }

function status() { // Return Running/Stopped for MyService }
Byob
la source
Vous ne savez pas comment procéder à partir de Linux et de SSH ... le fait que l'utilisateur soit administrateur ne suffit pas, l'environnement doit également être amélioré. Par exemple, il suffit d'ouvrir une invite de commande et de saisir net start & lt; service & gt; ne fonctionnera pas, l'invite de commande devant être exécutée en tant qu'administrateur.
Keltari
Merci à tous pour vos réponses! Je me suis penché sur l’utilisation de l’API wmi, mais j’ai mis cette option en attente car il fallait intégrer un nouveau logiciel dans l’environnement, ce qui est un processus fastidieux ... service ciblé. En ce qui concerne la connectivité SSH entre Windows / Linux, j'ai installé un serveur Windows ssh et utilisé l'authentification par clé publique pour permettre à mon utilisateur de se connecter via un script linux.
Byob
Juste pour clarifier: le contrôle du service a été effectué via Windows Batch à l'aide de 'sc & lt; query | commencer | arrêter & gt; MyServiceName '
Byob

Réponses:

3

Je voudrais que le script SSH démarre un script PowerShell. Powershell est capable de s'élever, puis de démarrer des services d'arrêt et de vérifier leur statut.

Un pseudo code:

ssh user@server powershell.bat

Où powershell.bat a tout le code nécessaire pour faire ce que vous voulez avec les services.

tbenz9
la source
2
Bonjour Byob, si cette réponse était correcte, merci de l’accepter comme étant la réponse correcte afin qu’elle soit marquée comme résolue.
tbenz9
4

Je sais que vous voulez utiliser bash / ssh, mais le moyen le plus simple de gérer Windows sous Linux est avec Python et WMI

http://timgolden.me.uk/python/wmi/index.html

http://timgolden.me.uk/python/wmi/cookbook.html

http://timgolden.me.uk/python/wmi/tutorial.html

import wmi

# Open a connection to a remote machine
c = wmi.WMI (
computer="other_machine",
user="you",
password="something"
)

# start the service
c.<service>.StartService ()

Si je n’ai pas besoin de BASH / SSH, c’est la procédure la plus simple. Si vous avez besoin d’utiliser SSH, cela devient plus compliqué. Vous devez maintenant installer Python et WMI sur la machine sur laquelle vous souhaitez l’exécuter. peut vouloir aller avec une langue qui est déjà installée sur chaque machine (VBScript, Powershell, etc.). Cette méthode suppose également que le service WMI est activé sur la zone Windows, ce que certains administrateurs n’aiment pas.

Les machines Linux conviennent parfaitement à l'administration d'environnements mixtes, mais assurez-vous d'utiliser le bon outil, un couteau de poche coupera un arbre, mais une tronçonneuse a été construite pour le couper.

Matty
la source
"Un couteau de poche coupera un arbre, mais une tronçonneuse a été construite pour le couper" - Certainement d'accord -
Byob
1

commencer = net rpc service start SERVICENAME -I IPADDRESS -U USERNAME%PASSWORD

stop = net rpc service stop SERVICENAME -I IPADDRESS -U USERNAME%PASSWORD

statut = net rpc service status SERVICENAME -I IPADDRESS -U USERNAME%PASSWORD

Si votre mot de passe contient des promotions, évitez-les avec une barre oblique inverse \.

Deadly
la source