Q. How do I generate random password to use with my shell script?
A. You can use makepasswd or mkpasswd command to generate random password under Linux / UNIX.
mkpasswd command is overfeatured front end to crypt(3) function. makepasswd command generates true random passwords by using the /dev/random feature of Linux, with the emphasis on security over pronounceability. It can also encrypt plaintext passwords given on the command line.
Install makepasswd
Type the following command at shell prompt:
$ sudo apt-get install makepasswd
How do I generate random password with mkpasswd?
Just type mkpasswd and hit enter key:
$ mkpasswd
Output:
Password: type-Your-Password
/o88/D4SvLix2Store password in a shell variable, enter:
RPASS=$(makepasswd --char=10)
echo $RPASS
Above will generate passwords with exactly 10 characters long. To produce encrypted passwords using the MD5 digest (hash), enter:
$ makepasswd --char=10 --crypt-md5
You can write a script as follows:
#!/bin/bash # ... do something userPassword=$(makepasswd --char=8) # ... do with $userPassword echo $userPassword # ...
You should follow me on twitter here or grab rss feed to keep track of new changes.
Featured Articles:
- 30 Handy Bash Shell Aliases For Linux / Unix / Mac OS X
- Top 30 Nmap Command Examples For Sys/Network Admins
- 25 PHP Security Best Practices For Sys Admins
- 20 Linux System Monitoring Tools Every SysAdmin Should Know
- 20 Linux Server Hardening Security Tips
- Linux: 20 Iptables Examples For New SysAdmins
- Top 20 OpenSSH Server Best Security Practices
- Top 20 Nginx WebServer Best Security Practices
- 20 Examples: Make Sure Unix / Linux Configuration Files Are Free From Syntax Errors
- 15 Greatest Open Source Terminal Applications Of 2012

- My 10 UNIX Command Line Mistakes
- Top 10 Open Source Web-Based Project Management Software
- Top 5 Email Client For Linux, Mac OS X, and Windows Users
- The Novice Guide To Buying A Linux Laptop













{ 6 comments… read them below or add one }
apt-get install makepasswdTo generate a random password for a user, you can do:
usermod -p `mkpasswd –chars=20` username
Also there char should be chars. Thanks for the tip.
This is wrong (At least for RHEL and CentOS). That will generate an unencrypted password and enter it into the passwd file. Correct command is:
usermod -p `makepasswd –char=20 –crypt-md5` username
Another handy way of generating random passwords is this:
echo `</dev/urandom tr -dc A-Za-z0-9 | head -c8`Obviously, this can be tweaked to your liking by adding symbols to the list of allowed characters and changing the length of the generated password in the head options. You can also use /dev/random if you want proper randomness but that does make it a whole lot slower.
there is also `pwgen`
mkpasswd on Ubuntu is as the manpage says a frontend to crypt. Means it encrypts an word given as input. If you don’t type anything it will still generate something different each time for some reason (because of a salt ?).
mkpasswd is totally different on RHEL/CentOS.