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
).
Samba et Samba-TNG
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
.
L'accès au registre
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).
Commandes
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 !
Pour finir
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
Présentation aux JRES 2009
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).