当前位置: 首页 > news >正文

Shell脚本批量添加和删除用户的多种方法

关于颜色:

shell中给文本添加颜色的三种表达方式:

echo   -e   “\e[32m  \e[0m”
echo   -e   “\033[32m   \033[0m”
echo   -e   “\e[32;40m   \e[0m”   32;40前面的数是字体颜色,后面的数是背景颜色

echo加上-e参数后表示可以处理特殊字符,比如\n \t等,,中间空格部分代表要填入的内容,例如:

31代表红色,40代表黑色,输出结果就是红色字体,黑色背景。

实例1.批量添加用户方法1

seq命令产生从某个数到另外一个数之间的所有整数

#!/bin/bash
#产生一个用户组
groupadd student
for i in `seq 1 5`
do
     #将student1 2 3 4 5 添加到student组中
     useradd -G student student$i;
     #设置密码的第一种方式,passwd --stdin用于从标准输入管道读入密码
     echo student$i | passwd student$i --stdin;
done

实例2.批量添加用户方法2

#!/bin/bash
password="123456"
for  USER  in  user1  user2  user3
do
     useradd  -m  $USER
     #设置密码的第二种方式,echo -e表示认识各种符号,比如\n \t等
     #因为密码需要验证,一共输入两遍,所以加上\n
     echo  -e  "${password}\n${password}" | passwd  $USER
done

实例3.批量添加用户方法3

#!/bin/bash
DATE=$(date +%F__%T)
#创建一个文件用于记录账号密码
USER_FILE=user.txt
#为输入的内容设置颜色
echo_color(){
        if [ $1 == "green" ];then
                echo -e "\e[32m$2\e[0m"
        elif [ $1 == "red" ];then
                echo -e "\033[31;40m$2\033[0m"
        fi
}
# 如果user.txt存在且大小大于0就改名备份
if [ -s $USER_FILE ];then
        mv $USER_FILE ${USER_FILE}-${DATE}.bak
        echo_color green "$USER_FILE exits, rename ${USER_FILE}-${DATE}.bak"
fi

echo -e "User\tPassword" >> $USER_FILE
echo -e "-------------" >> $USER_FILE

for USER in stt{1..5};
do
        #如果该用户不存在,如果用户存在id $user会输出正确信息
        if ! id $USER &>/dev/null; then
                #产生一个随机数密码
                PASS=$(echo $RANDOM | md5sum | cut -c 1-8)
                useradd $USER
                echo $PASS | passwd --stdin $USER &>/dev/null
                echo -e "$USER\t$PASS" >> $USER_FILE
                echo_color green "$USER successfully created"
        else
                echo_color red "$USER already exits!"
        fi
done

实例4.批量添加用户4

#!/bin/bash
groupadd class1
i=1
while [ $i -le 30 ]
do
        if [ $i -le 9 ];then
                USERNAME=stu0${i}
        else
                USERNAME=stu${i}
        fi
#useradd -M表示创建user后不生成home目录,然后自己创建
useradd -M $USERNAME
mkdir /home/$USERNAME
chown -R $USERNAME /home/$USERNAME
chgrp -R class1 /home/$USERNAME
let i++
done

实例5.批量删除用户

#!/bin/bash
i=1
while [ $i -le 5 ]
do
        userdel -r stt${i}
        i=$[$i+1]
done

 

相关文章:

  • 使用shell脚本进行每月定时备份数据
  • 安装Zabbix过程中出现的问题集
  • Shell屏蔽每小时SSH暴力破解超过N次的ip,再也不用担心云服务器被暴力破解了
  • ios 跳转的运用 push和modal
  • 如何优雅的将Thymeleaf集成到SpringBoot
  • 开发基于SpringBoot和BootStrap的全栈论坛网站(一):准备阶段
  • 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(三)——使用Flask-Login库实现登录功能...
  • 开发基于SpringBoot和BootStrap的全栈论坛网站(二):后端人员如何快速使用BootStrap
  • java虚拟机(三)java的垃圾回收机制详解
  • 查看ORACLE的实际执行计划
  • 开发基于SpringBoot和BootStrap的全栈论坛网站(三):登陆注册以及cookies的功能完成
  • 开发基于SpringBoot和BootStrap的全栈论坛网站(四):完成问题发布功能
  • OSChina 周日乱弹 ——冯小牛 我要治愈你!
  • 开发基于SpringBoot和BootStrap的全栈论坛网站(五):完成首页展示以及分页功能
  • 冒泡排序法与二分查找法
  • [数据结构]链表的实现在PHP中
  • 0基础学习移动端适配
  • PHP 的 SAPI 是个什么东西
  • React组件设计模式(一)
  • Vim 折腾记
  • Vue.js-Day01
  • Windows Containers 大冒险: 容器网络
  • 技术:超级实用的电脑小技巧
  • 一个项目push到多个远程Git仓库
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • #Z2294. 打印树的直径
  • $.ajax中的eval及dataType
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (33)STM32——485实验笔记
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (done) 两个矩阵 “相似” 是什么意思?
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (循环依赖问题)学习spring的第九天
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转)h264中avc和flv数据的解析
  • .NET 8.0 发布到 IIS
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .net打印*三角形
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • .net专家(高海东的专栏)
  • .Net转前端开发-启航篇,如何定制博客园主题
  • :中兴通讯为何成功
  • @hook扩展分析
  • [ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042
  • [2017][note]基于空间交叉相位调制的两个连续波在few layer铋Bi中的全光switch——
  • [Android开源]EasySharedPreferences:优雅的进行SharedPreferences数据存储操作
  • [Angular 基础] - 数据绑定(databinding)
  • [BeginCTF]真龙之力
  • [C#]C# winform部署yolov8目标检测的openvino模型