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 请进行输入:
想要添加命令执行提示,加上就行了,我懒,就不加了
继续阅读

我的微信
这是我的微信扫一扫
评论