Gérer des systèmes Windows depuis Unix

Je veux lancer, à distance, des commandes sur des systèmes Windows, depuis un shell Unix. Le cahier des charges est simple : je connais bien Unix, je connais très mal Windows. En particulier, je ne connais ni VB truc, ni WSH, ni PowerShell ni tous leurs amis.

Autre point important : ne rien avoir à installer. Donc pas de FreeSSHd (testé, ça marche bien, y compris l'édition de fichiers avec edit.exe).

Cette page est maintenant obsolète : il existe désormais Winexe : un outil PsExec-like pour Unix ou Linux.

La solution est dans Samba-TNG. Le projet ne semble plus trop avancer mais dores et déjà contient tout ce dont nous avons besoin.

Le compiler et l'installer (./configure && make && sudo make install). Quand c'est fait, dans /usr/local/samba/bin (si vous n'avez pas changé l'option --prefix lors du ./configure), on trouve deux commandes : registry et cmdat.

Dans la suite, adminuser est un utilisateur de votre système Windows (nommé client) qui est dans le groupe Administrators ou Domain Admins.

On utilise registry(1). Typiquement :

$ regedit -Uadminuser -S client -c 'registry value create \
? "HKEY_LOCAL_MACHINE\System\CurrentControlSet002\Services\EventLog\ComputerName" REG_SZ name'

Il y a une page de manuel fournie avec.

À noter : Samba legacy propose bientôt une commande editreg(1) utilisable pour modifier la ruche HKCU i. e. les fichiers NTUser.dat que l'on trouve dans les profils (itinérants).

On utilise cmdat(1). Typiquement :

$ smbclient -Uadminuser -c 'cd tmp; put script.bat' //client/c$
$ cmdat -S client -Uadminuser 'at now c:\tmp\script.bat'

En fait, cmdat(1) utilise les M$ RPC pour utiliser at.exe. Ça n'est pas interactif mais c'est déjà beaucoup !

Dans Samba legacy, on trouve les commandes net(8), rpcclient(1) qui permettent de faire des choses comme rebooter un système :

$ net rpc shutdown -r -f -t 0 -C "reboot" -I client -Uadminuser

Couplé à la virtualisation (cf. Gestion de parc Windows facile), cette configuration a fait l'objet d'une présentation avec Laurent Joly lors des Journées Réseaux 2009 : « Gestion de parc Windows depuis Unix » (présentation).

  • user/pc/sysadmin/cmdat.txt
  • Dernière modification : 2011/08/22 13:25
  • de pc