[Script] Génération de mot de passe en ligne de commande

Génération de mot de passe en ligne de commande [Script] - Management du SI - Systèmes & Réseaux Pro

Marsh Posté le 07-07-2011 à 17:23:37    

Hello,
 
J'ai une petite question qui devrait rapidement trouver réponse ici avec tous les fanas de scripts qui tournent dans le coin :D
 
Je suis en train de me faire un script pour créer automatiquement une tâche planifiée de redémarrage lorsque je déploie un serveur. Dans ce script, je souhaite pouvoir créer un compte local qui fera tourner la tâche en question.
 
Mon problème est de pouvoir fournir un mot de passe à ce compte, sans qu'il apparaisse pour autant dans le script. Ce que j'aurais voulu, c'est donc pouvoir générer un mot de passe aléatoire et le fournir au compte. J'ai bien trouvé la commande net user nom_du_compte /random, mais je ne vois pas comment récupérer le mot de passe pour ensuite l'appliquer lors de la création de la tâche planifiée.
 
Il me faudra donc soit une méthode pour récupérer ce mot de passe généré, soit un script ou un petit outil qui me permettrait de stocker le mot de passe dans une variable d'environnement ou un fichier histoire de pouvoir le réutiliser dans la suite de mon script.
 
 
Je sais pas si j'ai  été clair :D

Reply

Marsh Posté le 07-07-2011 à 17:23:37   

Reply

Marsh Posté le 07-07-2011 à 17:49:20    

en considérant que ton windows est en langue française :

Code :
  1. for /F "tokens=1-8 delims= " %i in ('net user /add pouet /random ^| findstr passe') do set PASS=%p


 
si tu comptes le mettre dans un fichier .bat il faut doubler les %

Code :
  1. for /F "tokens=1-8 delims= " %%i in ('net user /add pouet /random ^| findstr passe') do set PASS=%%p


Message édité par couak le 07-07-2011 à 17:49:54
Reply

Marsh Posté le 08-07-2011 à 08:40:09    

Rooooh... Je t'aime  [:gum]  
 
Merci :D

Reply

Marsh Posté le 03-08-2011 à 17:34:50    

Hello,
 
je reviens sur mon sujet, parce que je rencontre un petit problème. J'ai fait mon script de déploiement, tout va bien, etc.
 
Mon problème : le mot de passe généré aléatoirement n'est pas toujours un mot de passe complexe ! Résultat : si je n'ai pas de chance, sur un serveur que j'installe, le script me jette parce que le compte n'a pas pu se créer !!
 
Je repars donc un peu à zéro : comment se générer un mot de passe complexe... :(

Reply

Marsh Posté le 03-08-2011 à 18:08:11    

Tu génères aléatoirement un mot de passe, tu le test selon tes critères de complexité et si c'est pas bon tu en regénère un, tu le retest, etc etc. (bref une boucle et qq if
 
Tu sors de la boucle une fois qu'un mdp est complexe et tu le soumets à ton système :)

Reply

Marsh Posté le 03-08-2011 à 19:01:53    

Mon problème est de savoir comment faire ça :D

Reply

Marsh Posté le 04-08-2011 à 00:40:29    

Salut,
 
en autoit, ca donnerait ça :

Code :
  1. AutoItSetOption("MustDeclareVars", 1)
  2. Dim $MDP, $boucle, $boucle2, $chaine[4][2], $RND, $temp, $file
  3. $chaine[0][0] = "abcdefghijklmnopkrstuvwxyz"
  4. $chaine[0][1] = 4
  5. $chaine[1][0] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  6. $chaine[1][1] = 4
  7. $chaine[2][0] = "0123456789"
  8. $chaine[2][1] = 2
  9. $chaine[3][0] = "+-_#@"
  10. $chaine[3][1] = 1
  11. For $boucle = 0 To 3
  12. For $boucle2 = 1 To $chaine[$boucle][1]
  13.  $temp &= StringMid($chaine[$boucle][0], Random(1, StringLen($chaine[$boucle][0]), 1), 1)
  14. Next
  15. Next
  16. For $boucle = 0 To StringLen($temp)
  17. $RND = Random(1, StringLen($temp), 1)
  18. If $RND = 0 Then $RND = 1
  19. $MDP &= StringMid($temp, $RND, 1)
  20. $temp = StringReplace($temp, $RND, " " )
  21. $temp = StringStripWS($temp, 8)
  22. Next
  23. $file = FileOpen(@TempDir & "\MDP.txt", 1)
  24. If $file <> -1 Then
  25. FileWrite($file, $MDP)
  26. FileClose($file)
  27. EndIf


 
ici, tu as génération d'un mdp avec 4 lettres minuscules, 4 majuscules, 2 chiffres et 1 caractère étendu.
Le tout est écrit dans un fichier dans le dossier %temp%

Reply

Marsh Posté le 04-08-2011 à 08:46:20    

Génial ! :)
 
Et c'est possible de l'envoyer dans une variable d'environnement plutôt que dans un fichier ?

Reply

Marsh Posté le 04-08-2011 à 10:34:54    

Oui mais cela nécessite soit :

 

- de pouvoir utiliser la commande setx (rajoute ~5 secs au script). Il faut donc que l'OS la contienne ou il faut la rendre accessible
- d'écrire dans le registre puis de "rafraichir" l'environnement mais cela rajoute 30secs au script (sur ma machine en tout cas) :(

 

Attention aussi à cet avertissement dans le help de setx :
"Sur un système local, les variables créées ou modifiées par cet
outil seront disponibles dans les fenêtres de commandes
futures mais pas dans la fenêtre de commande CMD.exe actuelle."

 

Fais ton choix :D


Message édité par ShonGail le 04-08-2011 à 10:35:31
Reply

Marsh Posté le 04-08-2011 à 21:06:56    

Si tu es sous 2008/2008 R2 les Managed Service Accounts peuvent répondre à ce genre de besoin. Ce sont des comptes de service dont le mot de passe se réinitialise automatiquement.

Reply

Marsh Posté le 04-08-2011 à 21:06:56   

Reply

Marsh Posté le 04-08-2011 à 22:50:21    

Bon. Pas grave, éventuellement je chargerai le contenu du fichier généré dans la variable d'environnement, et je détruirai le fichier. Je vais essayer comme ça.
 
@ nebulios : je veux un script utilisable aussi pour mes 2003, mais merci pour l'idée, ça me servira peut-être pour autre chose :)

Reply

Marsh Posté le 05-08-2011 à 10:47:11    

Tu peux aussi faire un script full autoit pour créer ton compte local puis redémarrer ton serveur :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed