シェルスクリプトでランダムなパスワードを生成する:ワンライナー
シェルスクリプトでランダムなパスワードを生成する
/dev/randomか/dev/urandomといくつかのコマンドを用いて簡単にランダムなパスワードを生成できる.そうLinuxならね.
/dev/randomと/dev/urandomの違いは,以下の記事がわかりやすい.
ここでは,/dev/urandomを使う.中身を見てみると,なんやらわからない出力が得られるはず.
cat /dev/urandom
これをtrコマンドに入れる.trコマンドは本来文字を置き換えるためのコマンドで,指定した文字の削除や連続した文字を1つにまとめたりするのに使う.
cat /dev/urandom | tr -dc 'a-zA-Z0-9'
これで無尽蔵にランダムな英数字が得られる.記号も含めたいのであれば以下のように記号も割り当てる.
cat /dev/urandom | tr -dc 'a-zA-Z0-9!@#$%^&*()_+-=[]{}<>?'
ここから,foldコマンドを使って指定した文字列で文字を区切る.例えば32文字で区切りたい場合は以下のようにする.
cat /dev/urandom | tr -dc 'a-zA-Z0-9!@#$%^&*()_+-=[]{}<>?' | fold -w 32
これで無尽蔵に32文字のランダムな英数字が得られる.ランダムなパスワードが1つしか必要ない場合は,その先頭行のみを取り出せば良いので,headコマンドを使う.
cat /dev/urandom | tr -dc 'a-zA-Z0-9!@#$%^&*()_+-=[]{}<>?' | fold -w 32 | head -n 1
こうすればランダムな32文字のパスワードが得られる.あとはこれをシェルスクリプトで使えば良い.
#!/bin/sh password=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9!@#$%^&*()_+-=[]{}<>?' | fold -w 32 | head -n 1)