您的位置:首页 > 其它

批处理增加和删除用户

2011-10-20 12:14 211 查看
下面是自己书写的批处理增加和删除用户的脚本程序

#!/bin/bash
#根据文件(包含用户名和密码)批处理增加用户,默认文件为users.list
#根据文件(包含用户名和一个是否删除用户主目录的参数)批处理删除用户
#默认文件为users.list
#用法: $0 {add|del} [UserListFile]
#Author:huangyandong
#Web:http://huangyandong.blog.51cto.com
#Date:2011/10/19
#History: 2011/10/19 release 1
#
#文件格式:
#(1).增加用户的文件格式:每一行一个用户
#UserName [Passwd]
#注:若没有指定密码则默认密码为用户名
#(2).删除用户的文件格式 :每一行一个用户
#UserName [y|Y|1]
#注:第二个参数是设置是否删除用户主目录,默认否

#变量设置
#指定执行的动作,默认为批量增加用户,也可以指定为del(批量删除)
Action=${1:-add}
#指定包含用户名的文件列表,默认为users.list
UserListFile=${2:-users.list}
#设置程序
AWK=gawk
PASSWD=passwd
USERADD=useradd
USERDEL=userdel

#若指定的文件列表不可读则提示并退出
if [ ! -r $UserListFile ];then
echo "$UserListFile 不存在" && exit 1;
fi

#获取用户列表
UserList=$(${AWK} '{print $1}' $UserListFile)

#函数定义
toupper()
{
#转换为大写
local str="$*"
echo $str |tr [:lower:] [:upper:]
}

useradd_batch()
{
#批处理增加用户
for everyuser in $UserList ;do
#获取用户密码
password=$(cat $UserListFile |grep "$everyuser "|${AWK} '{print $2}')
#通过在文件/etc/passwd中查找用户判断用户是否存在,
#若用户存在则不创建,否则创建用户
if cat /etc/passwd|grep "^${everyuser}:" >/dev/null ;then
echo "用户 $everyuser 已存在,不创建该用户"
else
${USERADD} $everyuser && echo "创建用户$everyuser 成功"
fi
#判断是否有指定密码,若没指定则设置默认密码为用户名
if [ -z "$password" ];then
password=${everyuser}
fi
#修改用户密码
echo "${password}"|${PASSWD} --stdin $everyuser >/dev/null
done
}

userdel_batch()
{
#批处理删除用户
for delusr in $UserList ;do
#获取额外选项,若为Y,y,1则连同主目录一起删除
local y=$(cat $UserListFile |grep "$delusr "|${AWK} '{print $2}')
case $y in
Y|y|1)
R="-r"
;;
*)
R=''
;;
esac
#判断用户是否存在,若存在则删除,若不存在则提示
if cat /etc/passwd|grep "^${delusr}:" >/dev/null ;then
${USERDEL} ${R} $delusr && echo "删除用户 $delusr 成功"
else
echo "用户$delusr 不存在"
fi
done
}

#主函数
case $(toupper $Action) in
DEL)
userdel_batch
;;
*)
useradd_batch
;;
esac

本文出自 “黄彦东” 博客,请务必保留此出处http://huangyandong.blog.51cto.com/1396940/692749
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: