#contents
*概要 [#u4a21bc1]
リストに列挙したユーザすべてのパスワードを再登録します。
このコンテンツの「tips集」にある「パスワード自動発行ツール」を予め用意しておいてください。
当然、rootで実行しますので、使用の際は十分注意してください。
*ソースコード [#ge2f6a51]
#!/usr/local/bin/bash
#---------------------------------------
# autochgpw.sh -
# リストに挙げた全ユーザのパスワードを
# 再設定するツール
#
# Ver.0.1
# by myasu 2002
#---------------------------------------
#一時的に生成するpasswdコマンド自動化のためのexpectのスクリプト
FILE_EXPECT="tmppw.exp"
#使用するコマンドの設定
C_MAKEPASSWD="/home/myasu/ap/bin/makepasswd" #パスワード生成用
C_CAT="/usr/local/bin/cat"
#ヘルプ
function _HELP()
{
echo "autochgpw.sh - リストに挙げた全ユーザのパスワードを再設定するツール"
echo " usage:"
echo " autochgpw.sh "
echo " 一行ごとにパスワードを変更したいユーザ名を並べたファイル。"
echo ""
echo "注意:一般ユーザでは実行できません。"
echo "注意:ウィンドウズ側のパスワード関連のポリシー設定に注意!"
echo " 実行中はパスワードポリシーを無効にしておく方が無難"
}
#-------------------
#メイン処理
#引数のチェック
if [ $# != 1 ]; then
#引数にユーザーリストが与えられていないとき
#ヘルプを表示して終了
_HELP
exit 1
fi
#ユーザ名&パスワード結合ファイルの生成
FILE_USERPASSWD="$1.csv"
touch $FILE_USERPASSWD
chmod 600 $FILE_USERPASSWD
#ユーザ名&パスワード結合ファイルが存在するとき
if [ -f $FILE_USERPASSWD ];then
#ファイルを削除
rm -f $FILE_USERPASSWD
fi
#進行状況表示用
#echo -n "進行状況:"
for BUF_USERNAME in `$C_CAT $1`
do
# echo -n "*"
#パスワードの生成
BUF_PASSWD=`$C_MAKEPASSWD 8 2`
#ユーザ名とパスワードとをコンマで結合して出力
echo "$BUF_USERNAME,$BUF_PASSWD" >> $FILE_USERPASSWD
#expect作業用スクリプトが存在すれば削除
if [ -f $FILE_FILE_EXPECT ];then
rm -f $FILE_EXPECT
fi
#expect作業用スクリプトを生成
echo "#!/usr/local/bin/expect --" > $FILE_EXPECT
echo "spawn passwd $BUF_USERNAME" >> $FILE_EXPECT
echo 'expect "*password:"' >> $FILE_EXPECT
echo "send '$BUF_PASSWD\r'" >> $FILE_EXPECT
echo 'expect "*password:"' >> $FILE_EXPECT
echo "send '$BUF_PASSWD\r'" >> $FILE_EXPECT
echo "expect eof" >> $FILE_EXPECT
#実行権限を与えて、また、無関係のユーザから見えないようにする
chmod 700 $FILE_EXPECT
#expect実行
$FILE_EXPECT
#少し待ち時間を挿入
sleep 2
done
echo ""
#expect作業用スクリプトが存在すれば削除
if [ -f $FILE_FILE_EXPECT ];then
rm -f $FILE_EXPECT
fi
RIGHT:2005-07-12 14:24:35 (火)
----
[[家サーバ管理帳]]