J'utilise de nombreux scripts pour la création de comptes applicatifs sous GNU/Linux. Comptes FTP, SFTP, web, SVN, système, etc. Cette automatisation évite les erreurs manuelles dans les procédures.
Plutôt que d'utiliser KeePass(X) pour générer un mot de passe il est possible d'automatiser ceci en bash.
Une seule ligne
C'est sur le blog de Seboss666 que j'ai trouvé cette petite astuce :
strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 12 | tr -d '\n'; echo
Et nous voilà avec un mot de passe aléatoire de 12 caractères alphanumériques, chouette non ?
Comment ça marche ?
urandom génère tout et n'importe quoi, grep se charge de récupérer uniquement les caractères alphanumériques, head récupère 12 lignes qu'il envoie à son pote tr pour supprimer les sauts de lignes.
La commande fonctionne sans accès root, donc parfaitement utilisable en environnement mutualisé.
Voici une version simplifiée :
tr -cd '[:alnum:]' < /dev/urandom | fold -w12 | head -n1
Bien sûr vous devez récupérer la chaine en variable pour le script, exemple :
mdp=$(tr -cd '[:alnum:]' < /dev/urandom | fold -w12 | head -n1)
Parmi d'autres méthodes chez howtogeek, même si je vous déconseille d'utiliser les fonctions de checksum.
Merci à Seboss666 de publier régulièrement ces billets d'astuces, on y trouve quelques perles et idées à garder de côté 🙂
Alternative
Version un poil différente mais tout aussi efficace :
cat /dev/urandom | tr -cd 'a-f0-9' | head -c 12; echo
Alternative avec openssl
Voici une alternative proposée par Buzut en commentaire :
openssl rand -hex 12
OpenSSL étant présent lui aussi nativement un peu partout.
Auteur : Mr Xhark
Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter
4 commentaires
Pourquoi ne pas utiliser simplement pwgen et ses nombreux paramètres ?
@jmhusson: parce que les commandes utilisées sont natives et disponibles partout, contrairement à pwgen
Sinon tu fais openssl rand -base64 12 et voilà !
Sachant que OpenSSL est installé par défaut sur la plupart des distribs.
En plus on remplace base64 pas hex si on veut de l'hexa !
merci pour l'alternative !