用户的添加与删除练习

-> 脚本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

  

shell用户管理->的更多相关文章

  1. 【shell 练习4】编写Shell用户管理脚本(二)

    一.创建.删除.查看用户,随机生成八位数密码 #!/bin/bash #Author:yanglt #!/bin/bash #Author:yanglt #Blog:https://www.cnblo ...

  2. linux 用户管理

    linux 用户管理 创建一个用户 foo 这个用户只能在/home/foo 上面增加删除文件, foo 不能在其他目录加减文件 useradd -d /home/foo -m foo [root@] ...

  3. mongodb的用户管理及安全认证

    1.确认mongodb的版本 > use admin switched to db admin > db.runCommand({}) { "version" : &q ...

  4. linux 用户管理(一)

    本节内容梗概: 1.用户管理配置文件 2.用户管理命令 3.用户组管理命令 4.批量添加用户 5.用户授权 学东西先讲原理,所以从配置文件入手 1.用户信息文件  /etc/passwd 存放了用户的 ...

  5. 第3章 Linux常用命令(4)_帮助、用户管理和解压缩命令

    4. 帮助命令 4.1 获取帮助信息:man (1)man命令 命令名称 man(英语原义:manual) 命令所在路径 usr/bin/man 执行权限 所有用户 语法 man [级别] [命令或配 ...

  6. Linux用户管理.md

    用户与组的概念 linux多用户,多任务的特性 Linux是一个真实的.完整的多用户多任务操作系统,多用户多任务就是可以在系统上建立多个用户,而多个用户可以在同一时间内登录同一个系统执行各自不同的任务 ...

  7. centos6.5 用户管理

    linux 用户管理 命令:useradd 选项: -c comment 备注信息 -d 用户目录 usr/test 不存在 则 -m test 创建 -s shell文件,指定用户的登录Shell. ...

  8. linux 学习7 用户管理相关文件 r

    7.1.用户配置文件 7.2.用户管理相关文件 7.3.用户管理命令 7.4.用户组管理命令 删除用户userdel [root@localhost ~]# userdel [-r] 用户名 //一定 ...

  9. Oracle【IT实验室】数据库备份与恢复之三:OS备份/用户管理的备份与恢复

    用户管理的备份与恢复也称 OS物理备份,是指通过数据库命令设置数据库为备份 状态,然后用操作系统命令,拷贝需要备份或恢复的文件.这种备份与恢复需要用户的 参与手工或自动完成. 对于使用 OS拷贝备份的 ...

随机推荐

  1. NOI2010~NOI2018选做

    [NOI2010] [NOI2010]海拔 高度只需要0/1,所以一个合法方案就是一个割,平面图求最小割. [NOI2010]航空管制 反序拓扑排序,每次取出第一类限制最大的放置,这样做答案不会更劣. ...

  2. 【CF183D】T-shirt(动态规划,贪心)

    [CF183D]T-shirt(动态规划,贪心) 题面 洛谷 CodeForces 题解 \(O(n^2m)\)的暴力懒得写了,比较容易,可以自己想想. 做法是这样的,首先我们发现一个结论: 对于某个 ...

  3. java的序列化流和打印流

    对象操作流(序列化流) 每次读取和写出的都是JavaBean对象. 序列化:将对象写入到文件中的过程 反序列化:从文件中读取对象到程序的过程 transient: 标识瞬态,序列化的时候,该修饰符修饰 ...

  4. Andoid自动判断输入是电话,网址或者Email的方法--Linkify

    Andoid自动判断输入是电话,网址或者Email的方法----Linkify的应用!http://blog.csdn.net/android_tutor/article/details/500016 ...

  5. BUG1 解决java compiler level does not match the version of the installed java project facet

    因工作的关系,Eclipse开发的Java项目拷来拷去,有时候会报一个很奇怪的错误.明明源码一模一样,为什么项目复制到另一台机器上,就会报“java compiler level does not m ...

  6. 得到不知道维度的string数组的维度

    在项目中常用到一类数组,那就是不知道个数的数组,例如: string ParamTable[] = {"frequency","ifbw","span ...

  7. CSS边框及常用样式

    一.CSS设置样式 1.1 边框border 作用:设置标签周围的边框,方法  board:宽度 样式 颜色,一般情况下样式使用 solid实体的,和dotted虚线的 <head> &l ...

  8. DNS系统的解析原理

    根据网络通讯原理,对于Router设备是通过IP地址进行路径的Forward:当通过域名(主机名)访问远程主机时,必须将相应的主机名解析为IP地址,DNS服务器就充当了这个角色. DNS的工作原理: ...

  9. python基础之面向对象02

    ---继承 当我们定义完成某个类时,可以再定义一个新类,新类可以继承第一个类.新类被称为子类,而被继承的类称为父类/基类/超类. 继承就是子类继承父类的属性和方法(注意是类属性和类方法). 继承可以使 ...

  10. etcd启用https服务

    目录 cfssl相关工具下载 生成etcd所需要的ssl证书 生成ca证书 生成etcd服务端证书 生成etcd客户端证书 修改etcd集群配置文件 重启etcd集群 验证集群健康情况 关于etcd的 ...