shell脚本案例:创建用户和组
使用场景
在部署程序时,往往首要任务是创建用户和组。有的程序可能用到的组、用户比较多;且不知道服务器环境是否已经有了所需的组和用户。所以针对这个情况,根据Oracle RAC部署时的实际情况写了个脚本。
Linux版本
脚本代码
#!/bin/bash
#组
echo -e "\e[32m************************ \e[0m"
echo -e "\e[32m组信息\e[0m"
echo -e "\e[32m************************ \e[0m"
group=(oinstall dba oper asmadmin asmdba asmoper)
for i in "${group[@]}"
do
grep "^$i" /etc/group >& /dev/null
if [ $? != 0 ];
then
if [ $i = "oinstall" ];
then groupadd -g 5001 oinstall; echo "oinstal组已添加"
elif [ $i = "dba" ];
then groupadd -g 5002 dba; echo "dba组已添加"
elif [ $i = "oper" ];
then groupadd -g 5003 oper; echo "oper组已添加"
elif [ $i = "asmadmin" ];
then groupadd -g 5004 asmadmin; echo "asmadmin组已添加"
elif [ $i = "asmoper" ];
then groupadd -g 5005 asmoper; echo "asmoper组已添加"
elif [ $i = "asmdba" ];
then groupadd -g 5006 asmdba; echo "asmdba组已添加"
fi
else
echo "$i组已存在"
fi
done
echo -e "\e[32m************************ \e[0m"
echo -e "\e[32m用户信息\e[0m"
echo -e "\e[32m************************ \e[0m"
user=(grid oracle)
for i in "${user[@]}"
do
grep "^$i" /etc/passwd >& /dev/null
if [ $? != 0 ];
then
if [ $i = grid ]
then useradd -u 6002 -g oinstall -G asmadmin,asmdba,asmoper,oper,dba grid ; echo grid | passwd --stdin grid ; echo "grid用户已添加"
elif [ $i = oracle ]
then useradd -u 6001 -g oinstall -G dba,asmdba,oper oracle; echo oracle | passwd --stdin oracle; echo "oracle用户已添加"
fi
else
echo "$i用户已存在"
fi
done