パスワードの自動生成と禁止文字の指定:その2

http://d.hatena.ne.jp/sik1/20100818/1282121458

mkpasswdでパスワードを設定する処理が重いので出力を眺めながら気長に待つ。1パターンに1秒程度かかる。

改良してみたのでメモ。
改良点は次の二つ。

  1. 「mkpasswd」の代わりに「expect + passwd」の組み合わせでパスワードを設定するようにした
  2. パスワード生成中のNGパターン表示を抑止(NGの場合は"."を表示するだけにする
#!/bin/sh

user=$1

while password=`mkpasswd -s 0 -l 9`
echo "$password" | grep -q '[oO01l9quUvVwWb6B8Z2]'
do echo -n "."
done

passwd="passwd"

expect -c "
spawn $passwd $user
expect New\ ; send $password; send \r
expect Retype\ ; send $password; send \r;
expect updated\ ;
expect eof exit 0
"
echo $password

TODO:expectじゃなくてヒアドキュメントでそのうち。。。