mkpasswd(とpwgen)についてもう少し。
こんばんは。昨日はランダムなパスワードを生成するためのツールmkpasswd(とpwgen)について、概略について少し書いてみました。昨日はインターネット接続環境がスマホのみの方や、コマンドラインを使わない方向けにWebGUI上で使えるmkpasswdのURLについて取り上げました。
今回はコマンドライン(CUI)で使う場合のmkpasswdについて書いてみることにします。(pwgenについては明日以降書いてみます。暫しお待ち下さい)
まずmkpasswdがインストールされているかどうかの確認から
実際に使えるかどうかを確認します。
$ which mkpasswd と入力して、/usr/bin/mkpasswd などと出てくればインストールされています。そうでなければ、インストールしてやる必要があります。CentOSであれば、以下のコマンドでインストールします。
# yum install expect
expectパッケージにmkpasswdが含まれているようです。expectは対話的に実行する必要のあるコマンドを使う際に活用出来ます。これについては、後日書いてみたいと思います。
mkpasswdの使い方
mkpasswd と打つと、全部で9文字、特殊記号1文字、数字2文字、英大文字2文字、英小文字4文字で出力されるようです。
オプションですが、-lで文字数の指定が、-sで特殊文字数の指定が、-dで数字の文字数指定が、-Cで英大文字数の指定が、 -cで英小文字数の指定が可能です。
たとえば、mkpasswd -l 12 -s 1 -c 3 -C 3 -d 2 と打ったとします。
このコマンドは、「全部で12文字、特殊文字1文字以上、英小文字3文字以上、英大文字3文字以上、数字2文字以上」の文字列を出力します。9文字は上記の条件で確定しますが、残り3文字はランダムに出力されることになります。
パスワードをファイルに書き出すことも出来ます
自分1人で使うわけではなく、複数ユーザにパスワードを発行して渡す場面も考えられます。そういう場合にはシェルスクリプトを書いてやると便利ですね。
今回はcshで書いてますが、当然bashでもOKです。むしろbashで書いてやる方がメンテナンス性はいいです。(^^;;
今回はpass_gen.shとしました。
## パスワードを生成し、結果をディスプレイに表示します。
## さらに、時刻を基にしたファイル名のファイルに書き出します。
#!/bin/csh
set ts = `date +%Y%m%d%H%M%S`
set pw = `mkpasswd -l 10 -s 0`
echo "パスワードは[$pw]です"
echo $pw > "$ts"_log.txt
実行結果は以下の通りです。
パスワードは[eat5UAwsj9]です
-rw-r--r-- 1 pi pi 11 Aug 7 20:11 20170807201118_pass.txt
-rw-r--r-- 1 pi pi 11 Aug 7 20:19 20170807201957_pass.txt
-rwxr-xr-x 1 pi pi 188 Aug 7 20:11 pass_gen.sh
現在時刻は20170807201957です
シェルスクリプトもさらに工夫してやれば、いろいろなことが出来そうです。