NW屋的日常徒然日記

ネットワークを専門にする元社内SEの日常とITネタ諸々を綴って行きます。

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です

 

 シェルスクリプトもさらに工夫してやれば、いろいろなことが出来そうです。