批量创建用户
需求:
批量创建10个用户,用户名:user01~user10,给每个用户设置随机密码(密码长度为10,包含大小写和数字,不包含特殊符号),并将每个用户的用户名和密码保存到文件中
脚本思路:
1.通过seq的-w参数取01到10的等宽数字
2.通过mkpasswd工具生成随机密码,-l参数指定长度为10,-s参数指定特殊符号为0
#!/bin/bash
for i in `seq -w 1 10`
do
useradd user$i
n=`mkpasswd -l 10 -s 0`
echo $n |passwd --stdin user$i
echo user$i $n >> /tmp/user.list
done
脚本执行效果:
[root@linux shell]# sh add_user.sh
更改用户 user01 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 user02 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 user03 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 user04 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 user05 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 user06 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 user07 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 user08 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 user09 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 user10 的密码 。
passwd:所有的身份验证令牌已经成功更新。
用户名和密码记录文件:
[root@linux shell]# cat /tmp/user.list
user01 z22nhZknZt
user02 is48CYgoxe
user03 rLagQb98sa
user04 os88vtwrTF
user05 j1OkhqcB1c
user06 Fokrt3mB6w
user07 lIqhzdM52k
user08 ca80viVstJ
user09 fasf8wdUX7
user10 d6zkNueF5u
删除批量创建的用户:
[root@linux shell]# for i in `seq -w 1 10`;do userdel -r user$i;done
批量更改文件名/打包文件
需求:
1.对目标目录/test下的所有.txt文件批量更名为.txt.bak
2.将所有.bak文件打包压缩为test.tar.gz
3.还原被批量更名的文件,去掉.bak
#!/bin/bash
#查找出指定目录的所有txt文件
find /test -type f -name "*.txt" >> /tmp/txt.list
#更名.txt文件并记录.bak文件到列表
for i in `cat /tmp/txt.list`
do
echo $i.bak >> /tmp/txt.bak.list
mv $i $i.bak
done
#打包压缩.bak文件
tar -czvf test.tar.gz `cat /tmp/txt.bak.list|xargs`
#批量还原被更改的.txt文件
for i in `cat /tmp/txt.list`
do
mv $i.bak $i
done
输入菜单中的数字执行命令
需求:
运行脚本时,输出功能菜单,让用户输入指定的数字选择执行的命令
#!/bin/bash
echo "***cmd_menu***:1.date 2.free 3.pwd"
read -p "请选择命令菜单中的选项:" n
if [ -z "$n" ]
then
echo "输入内容不能为空."
exit
fi
n1=`echo $n|sed 's/[0-9]//g'`
if [ -n "$n1" ]
then
echo "请输入范围为1-3的纯数字."
exit
fi
case $n in
1)
date
;;
2)
free
;;
3)
pwd
;;
*)
echo "输入错误,范围1-3."
esac
运行结果:
[root@linux shell]# sh test.sh
***cmd_menu***:1.date 2.free 3.pwd
请选择命令菜单中的选项:
输入内容不能为空.
[root@linux shell]# sh test.sh
***cmd_menu***:1.date 2.free 3.pwd
请选择命令菜单中的选项:123qw
请输入范围为1-3数字.
[root@linux shell]# sh test.sh
***cmd_menu***:1.date 2.free 3.pwd
请选择命令菜单中的选项:1
2019年 11月 26日 星期二 20:38:11 CST
[root@linux shell]# sh test.sh
***cmd_menu***:1.date 2.free 3.pwd
请选择命令菜单中的选项:2
total used free shared buff/cache available
Mem: 1005480 454768 71892 13108 478820 389492
Swap: 2097148 9216 2087932
[root@linux shell]# sh test.sh
***cmd_menu***:1.date 2.free 3.pwd
请选择命令菜单中的选项:3
/root/shell
[root@linux shell]# sh test.sh
***cmd_menu***:1.date 2.free 3.pwd
请选择命令菜单中的选项:4
输入错误,范围1-3.