02-Shell编程-Linux用户和组

embedded/2024/9/25 21:31:23/

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/embedded/31705.html

相关文章

分类预测 | MATLAB实现LSSVM最小二乘支持向量机多分类预测

分类预测 | MATLAB实现LSSVM最小二乘支持向量机多分类预测 目录 分类预测 | MATLAB实现LSSVM最小二乘支持向量机多分类预测分类效果基本介绍程序设计参考资料分类效果 基本介绍 MATLAB实现LSSVM最小二乘支持向量机多分类预测。最小二乘支持向量机(Least Squares Support Vecto…

全面学习SpringCloud框架指南

要深入学习Spring Cloud框架&#xff0c;你需要系统地掌握其核心组件和概念&#xff0c;并了解如何在实际项目中应用这些知识。以下是一些关键的学习点和相应的学习内容&#xff1a; 一共分为10个模块包括&#xff1a; 1、微服务架构基础&#xff1a; 理解微服务架构的概念和…

一机游领航旅游智慧化浪潮:借助前沿智能设备,革新旅游服务效率,构建高效便捷、生态友好的旅游服务新纪元,开启智慧旅游新时代

目录 一、引言 二、一机游的定义与特点 &#xff08;一&#xff09;一机游的定义 &#xff08;二&#xff09;一机游的特点 三、智能设备在旅游服务中的应用 &#xff08;一&#xff09;旅游前的信息查询与预订支付 &#xff08;二&#xff09;旅游中的导航导览与互动体…

内网安全-代理Socks协议路由不出网后渗透通讯CS-MSF控制上线简单总结

我这里只记录原理&#xff0c;具体操作看文章后半段或者这篇文章内网渗透—代理Socks协议、路由不出网、后渗透通讯、CS-MSF控制上线_内网渗透 代理-CSDN博客 注意这里是解决后渗透通讯问题&#xff0c;之后怎么提权&#xff0c;控制后面再说 背景 只有win7有网&#xff0c;其…

【JVM】从硬件层面和应用层面的有序性和可见性,到Java的volatile和synchronized

Java的关键字volatile保证了有序性和可见性&#xff0c;这里我试着从底层开始讲一下有序性和可见性。 一&#xff0c;一致性 数据如果同时被两个cpu读取了&#xff0c;如何保证数据的一致性&#xff1f;或者换句话说&#xff0c;cpu1改了数据&#xff0c;cpu2的数据就成了无效…

富文本编辑器 iOS

https://gitee.com/klkxxy/WGEditor-mobile#wgeditor-mobile 采用iOS系统浏览器做的一款富文本编辑器工具。 原理就是使用WKWebView加载一个本地的一个html文件&#xff0c;从而达到编辑器功能的效果&#xff01; 由于浏览器的一些特性等&#xff0c;富文本编辑器手机端很难做…

Python数据爬取超简单入门

## 什么是网络爬虫&#xff1f; 网络爬虫是一种自动浏览器程序&#xff0c;能够自动地从互联网获取数据。爬虫的主要任务是访问网页&#xff0c;分析网页内容&#xff0c;然后提取所需的信息。爬虫广泛应用于数据收集、数据分析、网页内容监控等领域。 ## 爬虫的基本步骤 1.…

【matlab基础知识】(二)

i从1加到100 >> s10;for i1:100,s1s1i;end;s1 s1 5050 >> s20;i1;while(i<100),s2s2i;ii1;end;s2 s2 5050 >> sum(1:100) ans 5050 >> s10;m0;while(s1<10000),mm1;s1s1m;end;s1,m s1 10011 m 141 tic, s0;for i1:100000,ss1/2^i1/3…