(modifié le 24 mars 2017 à 1:54)

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