shell脚本:批量创建用户/更改文件名、输入数字执行命令

批量创建用户

需求:
批量创建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.
发布了114 篇原创文章 · 获赞 851 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/Powerful_Fy/article/details/103256938