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

执行效果

相关推荐
韩明君9 分钟前
Debian12安装RabittMQ 4.3.0
linux·debian·高并发·debian12·rabittmq
未来超低端科技研究所18 分钟前
大恒工业相机c#开发,NET8跨平台使用(armlinux和x86linux)
linux·c#·工业相机·net8·大恒图像·跨平台开发
Languorous.19 分钟前
Linux 系统安装 MySQL(CentOS8/Ubuntu),命令行实操完整版
linux·mysql·ubuntu
_童年的回忆_22 分钟前
【Linux】安装Jenkins并且打包发布springboot项目
linux·spring boot·jenkins
Yana.nice24 分钟前
rpm -K检查RPM软件包完整性
linux·服务器·网络
Data_Journal24 分钟前
Node.js网络爬取指南——简单易上手!
大数据·linux·服务器·前端·javascript
七爷不在我这里27 分钟前
oracle的26版本及以下 Null的判断及空串判定
数据库·oracle
TEC_INO38 分钟前
Linux58:rockx_vi_handle_thread线程的讲解
linux·运维·服务器
小此方2 小时前
Re:Linux系统篇(十三)特别篇: 实现Linux第⼀个系统程序−进度条
linux·运维·服务器
夏日听雨眠10 小时前
LInux(逻辑地址与物理地址的区别,文件描述符,lseek函数)
linux·运维·网络