shell用户管理->
2024-09-03 05:10:18
用户的添加与删除练习
-> 脚本1(if then)
思路:
1.条件测试, 脚本使用案例, 创建用户【交互式创建】
1.怎么交互式 read -p
2.接收到对应字符串怎么创建用户 useradd
3.用户是否存在,如果存在则不执行,如果不存在则执行
脚本实现:
#!/usr/bin/bash
read -p "Please input a username: " user
id $user &>/dev/null if [ $? -eq ]; then
echo "user $user already exists"
else
useradd $user
if [ $? -eq ];then
echo "$user is created."
fi
fi
-> 脚本2(创建用户+密码)
[root@jumpserver- scripts]# cat user.sh
#!/bin/bash #.判断用户输入是否为空
read -p "请输入要创建用户的数量 :" num
if [[ -z $num ]];then
echo "输入的用户名不能为空"
exit
fi #.判断用户输入的是否为数字
if [[ ! "$num" =~ ^[-]+$ ]];then
echo "你输入的不是数字"
exit
fi #.判断用户输入的是否为空
read -p "请输入要创建用户的名称 :" name
if [[ -z $name ]];then
echo "用户名不能为空值"
exit
fi #.判断用户输入的是否为数字
if [[ ! "$name" =~ ^[a-z]+$ ]];then
echo "你输入的不能是小写字母"
exit
fi #.遍历用户输入的数字
for i in $(seq $num);do
useradd $name$i # 创建用户
echo "" |passwd --stdin $name$i &>/dev/null #给新创建的用户设置密码123
echo "$name$i用户创建成功,密码为:123"
done
-> 脚本3(for)
[root@jumpserver- scripts]# cat useradd.sh
#!/usr/bin/bash for i in $(cat tt.txt)
do
id $i &>/dev/null
if [ $? -ne ];then
useradd $i
echo -e "\033[32m $i 用户创建成功... \033[0m "
else
echo -e "\033[31m $i 用户已经存在... \033[0m "
fi
done tt.txt 只是一个测试文件,可以随便写内容
-> 脚本4(while)
[root@jumpserver- scripts]# cat while_user.sh
#!/bin/bash while read user
do
id $user &>/dev/null
if [ $? -ne ];then
useradd $user
echo -e "\033[32m $user 用户创建成功... \033[0m "
else
echo -e "\033[31m $user 用户已经存在... \033[0m "
fi
done<user.txt
-> 脚本5 (while-添加指定用户和密码)
[root@jumpserver- scripts]# cat while_user_2.sh
#!/bin/bash while read test
do
user=$(echo $test | awk '{print $1}')
passwd=$(echo $test | awk '{print $2}') id $user &>/dev/null
if [ $? -eq ];then
echo "用户 $user 已经存在"
else
useradd $user && echo "$passwd" |passwd --stdin $user &>/dev/null
echo "用户 $user 创建成功。。密码是 $passwd"
fi
done<test.txt
test文件内容:
[root@jumpserver-70 scripts]# cat test.txt
zhuzhu 123
haha 234
hehe 345
[root@jumpserver-70 scripts]# sh while_user_2.sh (实现的效果)
用户 zhuzhu 创建成功。。密码是 123
用户 haha 创建成功。。密码是 234
用户 hehe 创建成功。。密码是 345
-> 脚本6(随机创建用户和密码)
8.添加user_00->user_09 10个用户, 并且给他们设置一个随机密码, 密码要求10位包含大小写字母以及数字, 注意需要把每个用户的密码记录到一个日志文件中
[root@jumpserver- scripts]# cat user_random.sh
#!/bin/bash user=user_0 for i in {..}
do
user_add=$user$i
user_pass=$(openssl rand -base64 |sed 's#[^a-zA-Z0-9]##g'|cut -c1-) id $user_add &>/dev/null
if [ $? -eq ];then
echo "用户已经存在了"
else
useradd $user_add && echo "$user_pass" | passwd --stdin $user_add &>/dev/null
echo "$user_add 用已经创建成功,密码是 $user_pass"
echo "$user_add $user_pass" >>user_passwd.txt
fi
done echo "用户是: $username 密码是: $password" |tee -a /tmp/user.txt
也可以用漏斗的方式,一遍生成一边直接写入脚本
->实现效果
[root@jumpserver-70 scripts]# cat user_passwd.txt
user_00 +QuwBA1i06
user_01 4CrXFwP0ME
user_02 xVYV8uB7a6
user_03 4OA6cTB5pu
user_04 mj/4K48pYA
user_05 vq5ogC4FAX
user_06 xCszOnBEc1
user_07 ct4tHHcjNK
user_08 iwLxFI2Rfx
user_09 5/pYJRhoRK
-> 脚本7 (随机字符-批量添加)-面试题
10.写一个脚本,实现批量添加20个用户,用户名为user01-20,密码为用户名后面跟5个随机字符。
[root@jumpserver- zuoye]# cat 10_user_add.sh
#!/bin/bash for i in {..}
do
passwd=$( uuidgen | sed -r 's#[0-9-]+##g' | cut -c -)
user_pass=user$i$passwd
id user$i &>/dev/null if [ $? -eq ];then
echo "用户 user$i 已经存在。。。"
else
useradd user$i && echo "${user_pass}" | passwd --stdin user$i >>/dev/null
echo "用户 user$i 创建成功。。。"
fi
done
->批量删除用户脚本(不完善,仅作为练习参考)
[root@jumpserver- scripts]# cat del_user.sh
#!/usr/bin/bash
read -p "请输入你想要删除的用户名称:" name
read -p "请输入你想要删除的用户数量:" num if [[ ! $name =~ ^[a-Z]+$ ]];then
echo "输入错误,请输入字母"
exit
fi if [[ ! $num =~ ^[-]+$ ]];then
echo "输入纯数字"
exit
fi echo "你要删除的用户名称是: $name
你要删除的用户数量是多少个: $num" read -p "你确定你要删除? " ready for i in $(seq $num);do username=$name$i case $ready in y|Y|Yes|YES) id $username &>/dev/null
if [ $? -eq ];then
echo "正在删除${username}......"
userdel -r $username
echo "删除完成"
else
echo "${username}不存在,无法删除"
fi
;; n|No|NO|no) echo "你选择退出,不会删除任何用户....."
exit
;;
*)
echo "您输入错误...."
exit
;;
esac
done
最新文章
- JavaWeb表单数据的获取方式
- linux系统中如何查看日志(转)
- 下载Spring框架开发包
- LVS-DR工作原理
- javaweb-四则运算
- LeetCode Maximum Depth of Binary Tree (求树的深度)
- python基础知识三
- HTML5新特性学习-2
- Android游戏开发实践(1)之NDK与JNI开发04
- 大白话说Java泛型(二):深入理解通配符
- Dynamics CRM 非声明验证方式下连接组织服务的两种方式的性能测试
- Spring mvc 下载文件处理
- boost中bind的使用
- scss是什么?在vue.cli中的安装使用步骤是?有哪几大特性?
- WPF 第三方控件
- macbook基本配置
- Django使用本地css/js文件
- 谈谈oracle里的join、left join、right join、full join-版本2
- HTML学习---基础知识学习
- 余弦相似度及基于python的三种代码实现、与欧氏距离的区别
热门文章
- 勉励自己--淡定的CrazyDog
- servlet与tomcat的关系
- nginx让用户通过用户名密码认证访问web页面
- Docker部署Tomcat实例
- in的对象选择(子查询还是List集合),in 的优化,in与exists
- windows环境下批处理实现守护进程
- python2(中文编码问题):UnicodeDecodeError: &#39;ascii&#39; codec can&#39;t decode byte 0x?? in position 1
- 防止jquery ajax 重复提交
- Git之简介及安装
- grpc-gateway:grpc转换为http协议对外提供服务