数十人や数百人のパスワードを手動でセットするのすごくまんどくさかったので、簡単なパスワードセットスクリプトを作ってみました。

スクリプト使用条件
1./home直下にホームディレクトリ名=登録されているユーザ名であること
2.http://www.kurobuti.com/blog/?p=1695からパスワードを自動生成するスクリプトを「passwd.sh」で作成し実行権限を与える。
3.「passwd.sh」と同じディレクトリに以下のスクリプト本体を保存する。

スクリプト本体(set_passwd.sh)

[root@test ~]# vi set_passwd.sh
#!/bin/sh
HOME=`pwd`
NUM=`ls -l /home/ | grep -v root | sed "1d" | wc -l`

for (( i = 1; i <= $NUM; i++ )) {

        PASSWD=`$HOME/passwd.sh`
        USERNAME=`ls -l /home | grep -v root | sed "1d" | sed -n "$i"p | awk '{print $3}'`
        echo $PASSWD | passwd --stdin $USERNAME
        echo "$USERNAME $PASSWD" >> $HOME/result.txt

        }

実行例
[root@test ~]# ls -l /home/ | sed "1d" | awk '{print $3}' | sort -k 1.5 -n
user1
user2
user3
user4
user5
user6
user7
user8
user9
user10
user11
・
・
・
[root@test ~]# ./set_passwd.sh
Changing password for user testuser.
passwd: all authentication tokens updated successfully.
Changing password for user user1.
passwd: all authentication tokens updated successfully.
Changing password for user user10.
passwd: all authentication tokens updated successfully.
Changing password for user user11.
passwd: all authentication tokens updated successfully.
Changing password for user user12.
passwd: all authentication tokens updated successfully.
Changing password for user user13.
passwd: all authentication tokens updated successfully.
Changing password for user user14.
passwd: all authentication tokens updated successfully.
Changing password for user user15.
passwd: all authentication tokens updated successfully.
Changing password for user user16.
passwd: all authentication tokens updated successfully.
・
・
・

結果は、「result.txt」に出力されます。

結果
[root@test ~]# sort -k 1.5 -n result.txt
user1   naTA;n(E
user2   p3.P`"<F
user3   |tA`sc?m
user4   #6*iJ`B}
user5   uu{yc#,+
user6   ,gO0_.5!
user7   P4~oDm]a
・
・
・

見方は、ユーザ名[TAB]セットされたパスワードです。

パスワードはランダム8文字がセットされます。少し改良すれば、文字数が設定できます。

ちなみに、1.の条件に当てはまらない場合やホームディレクトリが違う場所にある場合は、以下のようなユーザリストを作成します。

ユーザリスト
[root@test ~]# vi userlist
user1
user2
user3
・
・
・

スクリプトのを修正します。

スクリプト修正
#!/bin/sh
HOME=`pwd`
NUM=`wc -l $HOME/userlist | awk '{print $1}'`

for (( i = 1; i <= $NUM; i++ )) {

        PASSWD=`$HOME/passwd.sh`
        USERNAME=`sed -n "$i"p $HOME/userlist`
        echo $PASSWD | passwd --stdin $USERNAME
        echo "$USERNAME $PASSWD" >> $HOME/result.txt

        }

今回は自分で作っちゃいましたが、パスワードをセットする便利なツールってあるのかな~。


9月 27, 2010 at 9:11 pm by 黒ぶちメガネ
Category: Linux