ユーザアカウントを一括で登録するスクリプトを作る修行
諸事情により LDAP などは導入できない状況において、複数のホストで同一のアカウントに同一の uid を与えるためのシェルスクリプトを作成。ここにメモしておく。
execflag=0 margin='[test] ' if [ "${1}" = "exec" ] ; then execflag=1 margin='[EXEC] ' fi group=babies gid=20000 dir=${0%/*} list_path=${dir}/${group}_list.txt if tmp=`grep $group /etc/group` ; then echo "${margin}already exist a group named $group" else echo "${margin}groupadd -g $gid $group" if [ $execflag = 1 ] ; then groupadd -g $gid $group; fi fi IFS=':' while read uid name comment ; do if [ -z "$uid" -o -z "$name" ] ; then echo "skip [$uid:$name:$comment]" elif id $name 1>/dev/null 2>&1 ; then echo "${margin}usermod -c \"$comment\" $name" if [ $execflag = 1 ] ; then usermod -c "$comment" $name; fi else echo "${margin}useradd -u $uid -g $group -c \"$comment\" $name" if [ $execflag = 1 ] ; then useradd -u $uid -g $group -c "$comment" $name; fi fi done < ${list_path}
これを nfs で export しておいて、使う方は nfs マウントして
# sh /mnt/util/benriscript.sh exec
と実行する。exec をつけなければ「こんなことやるぞー」というのだけ出してコマンドの実行はしない。そのときは特権ユーザである必要もない。はず。たぶん。
group と gid を外から与えられると便利だが、まあとりあえずいいでしょう。