shell脚本案例:创建用户和组

使用场景

在部署程序时,往往首要任务是创建用户和组。有的程序可能用到的组、用户比较多;且不知道服务器环境是否已经有了所需的组和用户。所以针对这个情况,根据Oracle RAC部署时的实际情况写了个脚本。

Linux版本

脚本代码

bash 复制代码
#!/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

执行效果

相关推荐
素雨迁喜1 分钟前
Linux系列文章(3)指令和权限
linux·运维·服务器
EndingCoder2 分钟前
反射和元数据:高级装饰器用法
linux·运维·前端·ubuntu·typescript
扑火的小飞蛾2 分钟前
【Oracle Database 分区表】之间隔分区_11g(一)
数据库·oracle
yes_p_m12 分钟前
Ubuntu误删/lib64自救指南
linux·运维·ubuntu
DarkAthena18 分钟前
【GaussDB】分析函数性能优化案例-row_number改写
数据库·sql·oracle·性能优化·gaussdb
数智工坊19 分钟前
【操作系统-线程介绍】
linux·算法·ubuntu
Lethehong21 分钟前
破局Oracle迁移困局:破局Oracle迁移困局:直面兼容性与成本的隐性痛点
数据库·oracle
枫叶丹424 分钟前
Oracle迁移实战:破解兼容性难题与高成本挑战
开发语言·数据库·oracle
济61726 分钟前
linux 系统移植(第十期)----Linux 顶层 Makefile详谈-- Ubuntu20.04
linux·服务器·数据库
大柏怎么被偷了30 分钟前
【Linux】线程的概念
java·linux·jvm