本帖最后由 kashu 于 2013-7-3 10:04 编辑
此脚本在RHEL 6.x和CentOS 6.x下测试OK。
本shell script功能:1、可以批量创建或删除帐号;
2、能够检测到需要被创建或删除的帐号是否已经存在,并予以相关提示;
3、新创建的帐号在用户首次登陆时,系统会要求该用户更改自己的初始密码;
4、使用者只需把待创建或待删除的帐号分别记录在两个列表文件中(./Ausers.lst创建用户的列表;./Duser.lst删除用户的列表),文件按如下格式编写即可:
user1:123
user2:123
user3:123
(以冒号作为分割,左边是用户名,右边是初始密码)
5、本shell script会忽略用户列表中的空行和以#开头的注释行;
6、若用户列表文件不存在,则给出提示并自动退出shell script;
7、本shell script中有两行read -p的命令,可以取代原本userlist=./Xusers.lst的功能,使得用户列表文件的位置可交互式地让用户自行指定;
8、在删除某个帐号前会先判断该帐号是否已经登陆,若该用户已登陆,则跳过删除该用户的动作并给出提示
注:
该shell script还有待改进,可以增加对用户列表中的用户名和密码进行判断是否合法,使用正则表达式可实现;
如果使用者对创建的UID或GID有额外的需求,那还需要修改本shell script。默认本shell script创建的都是普通用户帐号;
本shell script在删除用户帐号的同时,只删除该用户的家目录和/var/spool/mail/USER,如果该用户在其它地方还创建了文件,则最佳的做法是在删除该用户前使用find / -user USER去搜索出该用户的相关文件,先予以删除或备份。考虑到脚本的运行速度,本脚本默认未加入此功能
[Bash shell] 纯文本查看 复制代码 #!/bin/bash
#Author: kashu
#Date: 2013-05
#Description: Create or Delete a batch of accounts.
read -p "Enter [a|A] to add users or Enter [d|D] to delete users: " opt
if [ "${opt}" == "a" -o "${opt}" == "A" ]; then
#read -p "enter your user list file location: " userlist
userlist=./Ausers.lst
if [ -f "${userlist}" ]; then
for user in `egrep -v ^'(#|$)' ${userlist} | cut -d: -f1`; do
E=`cut -d: -f1 < /etc/passwd | grep ${user}`
if [ "${E}" == "" ]; then
for pass in `grep ${user} ${userlist} | cut -d: -f2`; do
useradd ${user} && echo ${pass} | passwd --stdin ${user} && chage -d 0 "`echo ${user}`" \
&& echo "Create [${user}] Successfully!" || echo "Create [${user}] ERROR!!"
done
else
echo "[${user}] is already EXISTS!" && continue
fi
done
else
echo "The file ${userlist} doesn't exist!"
fi
elif [ "${opt}" == "d" -o "${opt}" == "D" ]; then
#read -p "enter your user list file location: " userlist
userlist=./Dusers.lst
if [ -f "${userlist}" ]; then
for user in `egrep -v ^'(#|$)' ${userlist} | cut -d: -f1`; do
E=`cut -d: -f1 < /etc/passwd | grep ${user}`
if [ "${E}" == "${user}" ]; then
if [ -z "`w | sed -e '1,2d' -e 's/\ .*//g' | sort -u | grep ${user}`" ]; then
userdel -r ${user} && echo "Delete [$user] successfully" || echo "Delete [$user] ERROR!!"
else
echo "user ${user} is currently logged in" && exit 1
fi
else
echo "[${user}] doesn't EXIST!!" && continue
fi
done
else
echo "The file ${userlist} doesn't exist!"
fi
else
echo -e "\nUsage:\nenter 'a' or 'A' to add users from a specific user list file;\
\nenter 'd' or 'D' to delete users from a specific user list file." && exit 0
fi
如果您发现此脚本有错误的地方或者您有好的建议,请不要犹豫,及时通知我吧,谢谢。
|