Il peut être parfois utile de générer un mot de passe dans un shell sans pour autant installer de programmes spécifiques comme mkpasswd, etc.
Par exemple, dans une application (web ou locale) générer un mot de passe par défaut, pour un utilisateur ou un programme. Un mot de passe efficace.
Il existe un générateur de données aléatoires :
dd if=/dev/urandom count=1
Il existe aussi le pseudo périphérique
Cette commande va générer 512 octets aléatoires. Mais ce générateur ne s'occupe pas de savoir si les données générées sont accessibles par un clavier et donc utilisables.
Pour améliorer ces données aléatoires et les rendre utilisables, il faut donc les transformer. Pour
dd if=/dev/urandom count=1 | uuencode -m -
qui va, par exemple, donner :
1+0 records in 1+0 records out 512 bytes transferred in 0.000346 secs (1480003 bytes/sec) begin-base64 644 - uoTo/5c2cv2lR5WP7FPxuAUS99HKYkcxzjRL8wKpwApdNJXp+ja4gGk1PD/4O1kckv4qO8FpXlhN ymTIDqAxSLIUfusI1bwcif2lTAIzzgrsC4PA4Be5DfC9Xeg+rKZuXLIFFjPoiOAvgEngADq+/VG+ prb1wdM/hCEgqAQv5vtDoHbESXtwrKkivU5+GNjMcDg/oPOu71ppq6h+ej+CFx4zLa2WlOYhMKP2 SgtxdBo7CxK/87AV7jgiv6TXHc+gedEHFxptsbRcVjAl4zbLstCXqL9DAQm9XDtiu0qI4F0Qsz6Q YIceRebIFo5VsBdKKsMsm6Cp+QOZ+snhGZXh2iBB2h3iQ7IUbdp/ylbpw6/znHAf7F0S3FZO/5nd Xrv87S2X/HjJE8JXty8tWCDKU1pOZiy94SeREXgolsNs7yy4cwjFpDrmkLwxskuUwA9LScOJD+XG 6DiuixTaq7Xsw8FciTnSkwIRFMsohmDRYlBRadBA5rTTF/E7KKzNjNNkPA7UOgNM39pOlvR+QacK c6G4JiQrfJaPhlkc78RzGhGTd+DrtUstPv0dyUVIRSw4UDhcN2eSuSEFzqncGeoXFTDYeaN8PTpy 5Zof72Jq8iAa4Z3b0+h3AtvjwCTf/ueDtnKUX/eCpKolay2dxcTRyhqpVg/iYAqAuT/D7PsbX9A= ====
long, mais plus aisément utilisable. il suffit ensuite d'éliminer les lignes inutiles, de tronquer pour ne prendre que quelques caractères. Par exemple :
dd if=/dev/urandom count=1 | uuencode -m - | head -n 2 | tail -n 1 | cut -c-12
va générer un mot de passe de 12 caractères de long.
Pour supprimer éventuellement , les + et les /, il suffit d'ajouter un sed :
dd if=/dev/urandom count=1 | uuencode -m - | sed 's/+//g' | sed 's/\///g' \ | head -n 2 | tail -n 1 | cut -c-12
ce qui va donner, par exemple :
Y5fCwMPoeyEt
De la même façon, on peut générer des nombres aléatoires...