02-Shell编程-Linux用户和组

devtools/2024/12/22 21:05:48/

Shell脚本实现编程管理Linux用户和组脚本,编写思路如下:


(1)脚本支持创建普通用户。

(2)支持创建多个用户或者列表用户添加。

(3)支持Linux系统用户删除。

(4)支持Linux系统组删除。

(5)支持对某个用户修改密码。

相关代码如下

#!/bin/bash
#2024年4月30日
#auto manager linux user########################
# 以下是一个用于自动管理 Linux 用户的 Shell 脚本。USR="$*"# 首先检查是否以 root 用户身份运行此脚本
if [ $UID -ne 0 ];thenecho -e "\033[32m-----------------\033[0m"echo -e "\033[32mThe script must be executed using the root user.\033[0m"exit 1
fi# 定义添加用户的函数
add_user(){read -p "Please enter the user name you need to create? " USRfor USR in $USRdo# 检查用户是否存在,如果不存在,则创建用户并设置密码id $USRif [ $? -ne 0 ];thenuseradd -s /bin/bash $USR -d /home/$USRecho ${USR}_123456|passwd --stdin $USRif [ $? -eq 0 ];thenecho -e "\033[32m-----------------\033[0m"echo -e "\033[32mThe $USR user created successfully\033[0m"echo -e "User,Password"echo -e "$USR,${USR}_123"echotail -n 5 /etc/passwdfielseecho -e "\033[32m-----------------\033[0m"echo -e "\033[32mThis $USR user already exists, please exit\033[0m"exit 1fidone
}# 定义从用户列表添加用户的函数
add_user_list(){# 从用户列表文件中读取用户名,并逐个添加用户if [ $# -eq 1 ];thenwhile read USRdouseradd -s /bin/bash $USR -d /home/$USRecho ${USR}_123456|passwd --stdin $USRif [ $? -eq 0 ];thenecho -e "\033[32m-----------------\033[0m"echo -e "\033[32mThe $USR user created successfully\033[0m"echo -e "User,Password"echo -e "$USR,${USR}_123"echotail -n 5 /etc/passwdfidone < $1elseecho -e "\033[32m-----------------\033[0m"echo -e "\033[32mThe user list file must be entered. The reference content format is as follows:\033[0m"echo "cyly1"echo "cyly2"echo "cyly3"echo "cyly4"echo "......"fi
}# 定义删除用户的函数
remove_user(){for USR in $USRdo# 逐个删除用户及其相关文件userdel -r $USRif [ $? -eq 0 ];thenecho -e "\033[32m-----------------\033[0m"echo -e "\033[32mThe $USR user delete successfully\033[0m"echotail -n 5 /etc/passwdfidone
}# 定义删除用户组的函数
remove_group(){for USR in $USRdo# 逐个删除用户组groupdel $USRif [ $? -eq 0 ];thenecho -e "\033[32m-----------------\033[0m"echo -e "\033[32mThe $USR group delete successfully\033[0m"echotail -n 5 /etc/passwdelse	grep "$USR" /etc/groupif [ $? -eq 0 ];thenecho -e "\033[32m-----------------\033[0m"echo -e "\033[32mThe $USR group delete failed, cannot remove the primary group of user $USR\033[0m"read -p "Are you sure you want to delete the $USR user? yes or no " INPUTif [ $INPUT == "y" -o $INPUT == "Y" -o $INPUT == "yes" -o $INPUT == "YES" ];thenuserdel -r $USRgroupdel $USR >>/dev/null 2>&1echo -e "\033[32m-----------------\033[0m"echo -e "\033[32mThe $USR user delete successfully\033[0m"echo -e "\033[32mThe $USR group delete successfully\033[0m"fififidone
}# 定义修改用户密码的函数
change_user_passwd(){read -p "Please enter your user name and new password: username password: " INPUTif [ $(echo $INPUT|sed 's/ /\n/g'|wc -l) -eq 2 ];thenUSR=$(echo $INPUT|awk '{print $1}')PAS=$(echo $INPUT|awk '{print $2}')for USR in $USRdoecho $PAS|passwd --stdin $USR		if [ $? -eq 0 ];thenecho -e "\033[32m-----------------\033[0m"echo -e "\033[32mThe password of $USR user was modified successfully\033[0m"echo -e "User,Password"echo -e "$USR,$PAS"echofidonefi
}# 根据用户输入执行相应的操作
case $1 in 1)add_user;;2)add_user_list $2;;3)remove_user;;4)remove_group;;5)change_user_passwd;;*)echo "---------------------------------------------"echo -e "\033[34mWelcome to system user management scripts:\033[0m"echo -e "\033[32m1) add user\033[0m"echo -e "\033[32m2) add_user_list\033[0m"echo -e "\033[32m3) remove_user\033[0m"echo -e "\033[32m4) remove_group\033[0m"echo -e "\033[32m5) change_user_passwd\033[0m"echo -e "\033[32mUsage:{/bin/sh $0 1|2|3|4|5|help}\033[0m"echo "---------------------------------------------"
esac

使用教程(会的不用看哦)

我用的MobaXterm,先创建一个shell名称

将上面的代码复制进去

给他赋值权限

chmod o+x user.sh

RUN

./user.sh

这里我们输入 1不起作用,我们要用下列命令来执行1-5 或者help

具体意思看顶部需求

./user.sh 1


http://www.ppmy.cn/devtools/31485.html

相关文章

从零开始搭建一个vue项目

从零开始搭建一个vue项目 一、环境准备 1.1 安装node.js 选择合适的LTS版本&#xff0c;然后下载安装&#xff0c;安装地址&#xff1a;https://nodejs.org/en/download 在命令行中查看已安装的node.js版本 node -v v14.14.01.2 切换为淘宝的镜像源 解决国内下载慢的问题,…

qt5-入门-2D绘图-Graphics View 架构

参考&#xff1a; Qt Graphics View Framework_w3cschool https://www.w3cschool.cn/learnroadqt/4mvj1j53.html C GUI Programming with Qt 4, Second Edition 本地环境&#xff1a; win10专业版&#xff0c;64位&#xff0c;Qt 5.12 基础知识 QPainter比较适合少量绘图的情…

服务器数据恢复—异常断电导致RAID模块故障的数据恢复案例

服务器数据恢复环境&#xff1a; 某品牌ProLiant DL380系列服务器&#xff0c;服务器中有一组由6块SAS硬盘组建的RAID5阵列&#xff0c;WINDOWS SERVER操作系统&#xff0c;作为企业内部文件服务器使用。 服务器故障&#xff1a; 机房供电几次意外中断&#xff0c;服务器出现故…

Apache SSI远程命令执行漏洞

什么是SSI Apache SSI&#xff08;Server Side Include)&#xff0c;通常称为"服务器端嵌入"或者叫"服务器端包含"&#xff0c;是一种类似于ASP的基于服务器的网页制作技术。默认扩展名是 .stm、.shtm 和 .shtml。 从技术层面来讲&#xff0c;SSI是一种在静…

【漏洞复现】zookeeper AdminServer 未授权访问漏洞

0x01 产品简介 ZooKeeper 是一个集中式服务&#xff0c;用于维护配置信息、命名、提供分布式同步和提供组服务。ZooKeeper的AdminServer是其管理界面的一部分&#xff0c;通常用于监控ZooKeeper集群的状态和执行一些管理操作。AdminServer提供了Web-based的管理和监控功能&…

UE4_Niagara_两个模型之间的粒子幻化

学习笔记&#xff0c;仅供参考&#xff01; 操作步骤&#xff1a; 1、新建niagara system&#xff0c;添加空的发射器&#xff0c;渲染改为网格体渲染器&#xff0c;网格体为1M_Cube. 2、创建粒子材质重载。 3、渲染网格体的材质设置&#xff1a; 4、在发射器属性面板&#x…

区块链 | IPFS:IPNS(入门版)

&#x1f98a;原文&#xff1a;IPFS 与 IPNS 啥关系&#xff1f; &#x1f98a;写在前面&#xff1a;本文属于搬运博客&#xff0c;自己留存学习。这篇文章讲得太入门了&#xff0c;不涉及任何底层原理。 正文 随着 2019 年 12 月 12 日 Filecoin 测试网的上线&#xff0c;IPF…

leetcode295. 数据流的中位数

class MedianFinder {//A为小根堆&#xff0c;B为大根堆List<Integer> A,B;public MedianFinder() {A new ArrayList<Integer>();B new ArrayList<Integer>();}public void addNum(int num) {int m A.size(),n B.size();if(m n){insert(B,num);int top …