case语句

root
233
文章
0
评论
2020年1月30日22:33:24 评论 2451字阅读8分10秒

Case选择语句,主要用于对多个选择条件进行匹配输出,与if elif语句结构类似,通常用于脚本传递输入参数,打印出输出结果及内容,其语法格式以Case…in开头,esac结尾。语法格式如下

#!/bin/bash
#By author thinkmo
case  $1  in 
    模式1)
    语句1
    ;; 
    模式2)
    语句2
    ;; 
    模式3)
    语句3
    ;; 
     * )
     无匹配后选项
esac

批量删除用户

#!/bin/bash
read -p "请输入要删除的用户: " x
if [ -z $x ];then
	echo "请输入名称"
	exit
fi
read -p "请输入要删除用户个数: " xx 
if [[ ! $xx =~ ^[0-9]+$ ]];then
	echo "请输入整数"
	exit
fi
for i in `seq $xx`
do
	echo "${x}$i"
done
read -p "你确定要删除以上用户吗[Y|y|N|n]" kk

for i in `seq $xx`
do
	num=${x}$i
	case $kk in
		Y|y)
			userdel -r $num &>/dev/null
			if [ $? -eq 0 ];then
				echo "删除成功"
			else
				echo "删除失败"
			fi
			;;
		N|n)
			exit
			;;
		*)
			echo "usage: [Y|y|N|n]"
	esac
done

菜单功能

#!/bin/bash
caidan(){
cat<<x
		h 显示帮助命令
		f 显示登陆信息
		d 显示磁盘信息
		m 显示内存信息
		u 查看系统负载
		q 退出程序
x
}
caidan
while true
do
	read -p "请输入:[h|f|d|m|u|q]" q
	case $q in
		h)
		  clear
		  caidan
		;;
		f)
		  w
		;;
		d)
		  df -h
		;;
		m)
		  free -h
		;;
		u)
		  uptime
		;;
		q)
		  exit
		;;
		*)
		  echo "usage: [h|f|d|m|u|q]"
	esac
done

实现跳板机jumpserver脚本

[root@zabbix ~]# vim jumpserver.sh 
#!/bin/bash
web01=192.168.5.7
web02=192.168.1.8
web03=192.168.1.9
nfs=192.168.1.31
backup=192.168.1.41
mysql=192.168.1.51
lb01=192.168.1.5
lb02=192.168.1.6
zabbix=192.168.1.72
men(){
cat<<x
	----------------------------
	|	1)  web01		|
	|	2)  web02		|
	|	3)  web03		|
	|	4)  nfs		        |
	|	5)  backup	        |
	|	6)  mysql		        |
	|	7)  lb01		        |
	|	8)  lb02		        |
	|	9)  zabbix		|
	|	h)  help		        |
	----------------------------
x
}
	#调用函数打印菜单
	men
	#控制不让输入ctrl+c,z(trap把什么命令定义到空)
	trap "" HUP INT TSTP
while true
do
	read -p "请输入你要联机的主机编号: " num
	case $num in
		1|web01)
		  ssh root@$web01
		;;
		2|web02)
		  ssh root@$web02
		;;
		3|web03)
		  ssh root@$web03
		;;
		4|nfs)
		  ssh root@$nfs
		;;
		5|backup)
		  ssh root@$backup
		;;
		6|mysql)
		  ssh root@$mysql
		;;
		7|lb01)
		  ssh root@$lb01
		;;
		8|lb02)
		  ssh root@$lb02
		;;
		9|zabbix)
		  ssh root@$zabbix
		;;
		h|help)
		  clear
		  men
		;;
		#退出后门,不要让其它人知道
		kk)
		  break
		;;
	esac
done	

trap 还可以提示用户

trap "你小子别乱按" HUP INT TSTP

想要开机自动运行,就再/etc/profile写

sh /server/scripts/jumpserver.sh

Nginx服务启动脚本

[root@web01 ~]# netstat -lntup|grep nginx|awk -F "[ :]+" '{print $5}'
80

[root@kk ~]# ps aux|grep nginx|grep master|awk '{print $2}'
3399

[root@web01 ~]# vim nginx_up.sh
#!/bin/bash
Nginx_restart(){
               /usr/sbin/nginx -s stop 
               sleep 2
               /usr/sbin/nginx
}
Nginx_Stop(){
               /usr/sbin/nginx -s stop
}
Nginx_Start(){
               /usr/sbin/nginx
}
Nginx_reload(){
               /usr/sbin/nginx -s reload
}
Nginx_Status(){
               echo "Nginx_prot=`netstat -lntup|grep nginx|awk -F "[ :]+" '{print $5}'`"
               echo "Nginx_pid=`ps aux|grep nginx|grep master|awk '{print $2}'`"
}
nginx(){
cat<<x
                  1)start_nginx
                  2)stop_nginx
                  3)restart_nginx
                  4)reload_nginx
                  5)status_nginx
x
}
nginx
read -p "请进行输入: " x
case $x in
                 1|start_nginx)
                     Nginx_Start
                  ;;
                 2|stop_nginx)
                     Nginx_Stop
                  ;;
                 3|restart_nginx)
                    Nginx_restart
                  ;;
                  4|reload_nginx)
                     Nginx_reload
                   ;;
                  5|status_nginx)
                     Nginx_Status
                    ;;
                   *)
                      echo "Usage:请输入相关内容"
esac

进行测试(一切正常)

[root@web01 ~]# sh nginx_up.sh 
		1)start_nginx
		2)stop_nginx
		3)restart_nginx
		4)reload_nginx
		5)status_nginx
请进行输入:

想要添加命令执行提示,加上就行了,我懒,就不加了

 

 

 

继续阅读
weinxin
我的微信
这是我的微信扫一扫
  • 文本由 发表于 2020年1月30日22:33:24
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
网站数据会滚脚本 shell

网站数据会滚脚本

网站数据会滚脚本 当代码经过测试环境后,正式进入生产环境,突然发现有问题,这时候需要立刻还原数据,写一个简单的网站代码回滚脚本 java项目的 #!/bin/bash Web_Dir=/server/...
三剑客练习 shell

三剑客练习

三剑客练习 grep I am hewenfu teacher! I teach linux. test I like badminton ball ,billiard ball and chines...
awk练习 shell

awk练习

awk 1.列出UID=0的用户 # awk -F : '$3==0' /etc/passwd root:x:0:0:root:/root:/bin/bash 2.列出系统的用户 # awk -F :...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: