CentOS shell-case语句
Posted 白菜素三鲜丶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS shell-case语句相关的知识,希望对你有一定的参考价值。
shell-case语句
case语句
case ... esac 为多选择语句,与其他语言中的 switch ... case 语句类似,是一种多分枝选择结构,每个 case 分支用右圆括号开始,用两个分号 ;; 表示 break,即执行结束,跳出整个 case ... esac 语句,esac(就是 case 反过来)作为结束标记。
## 语法:
case 变量 in
动作1|动作3|动作4)
cmd1
;;
动作2)
cmd2
*)
echo 脚本的用法
;;
esac
case会将变量和动作进行判断
可以进行多动作判断,使用 | 或
给shell加颜色
## 固定格式
\\e[1;31mzls\\e[0m
red_start=\\e[1;31m
red_end=\\e[0m
$red_start xxx $red_end
echo -e \\e[1;31mzls\\e[0m
[root@m01 ~]# echo -e \\e[5;32;41m zls \\e[0m
\\e \\033 \\E
字体型号;字体颜色;背景颜色m
## 字体型号:
0:正常字体
1:字体加粗
2:字体变浅
3:字体斜体
4:字体下划线
5:字体闪烁
## 字体颜色
30m:黑色
31m:红色
32m:绿色
33m:黄色
34m:蓝色
35m:紫色
36m:天蓝
37m:白色
## 背景颜色
40m:黑色
41m:红色
42m:绿色
43m:黄色
44m:蓝色
45m:紫色
46m:天蓝
47m:白色
跳板机
1.判断指定的ip是否可以连接
2.判断退出密码
3.推送秘钥对
方式一
#!/bin/bash
signal()
trap INI QUIT TSTP TERM HUP
ssh_key()
. /etc/init.d/functions
ls -l ~/.ssh/id_rsa &>/dev/null || ssh-keygen -t rsa -P -f ~/.ssh/id_rsa &>/dev/null
for n in 5 6 7 8 9 31 41 51 71;do
sshpass -p wsh112233 ssh-copy-id -o StrictHostKeyChecking no -i ~/.ssh/id_rsa.pub root@10.0.0.$n &>/dev/null && \\
action "10.0.0.$n send public key " /bin/true || \\
action "10.0.0.$n send public key " /bin/false
done
list_host()
cat <<EOF
+------------------------+
| 1 172.16.1.7 web01 |
+------------------------+
| 2 172.16.1.8 web02 |
+------------------------+
| 3 172.16.1.31 nfs |
+------------------------+
| 4 172.16.1.41 backup |
+------------------------+
| 5 172.16.1.51 db01 |
+------------------------+
| 6 172.16.1.52 db02 |
+------------------------+
| 7 172.16.1.71 zabbix |
+------------------------+
| 输入 h 查看帮助菜单 |
+------------------------+
| 按 q 退出程序 |
+------------------------+
EOF
exit_pass()
read -p 请输入密码: pass
while true;do
if [ $pass == 123 ];then
exit
else
main
fi
done
host_ip()
case $host in
1|172.16.1.7|web01)
echo 连接 172.1.16.7 web01
ssh 172.16.1.7
;;
2|172.16.1.8|web02)
echo 连接 172.16.1.8 web02
ssh 172.16.1.7
;;
3|172.16.1.31|nfs)
echo 连接 172.16.1.31 nfs
ssh 172.16.1.31
;;
4|172.16.1.41|backup)
echo 连接 172.16.1.41 backup
ssh 172.16.1.41
;;
5|172.16.1.51|db01)
echo 连接 172.16.1.51 db01
ssh 172.16.1.51
;;
6|172.16.1.52|db02)
echo 连接 172.16.1.52 db02
ssh 172.16.1.52
;;
7|172.16.1.71|zabbix)
echo 连接 172.16.1.71 zabbix
ssh 172.16.1.71
;;
h)
clear
list_host
;;
q)
exit_pass
;;
*)
echo "Usage: $0 请输入主机名或IP或菜单编号...."
esac
ssh_key
main()
while true;do
signal
list_host
read -p 请输入需要连接的主机: host
host_ip
done
main
方式二
#!/bin/bash
menu()
cat <<EOF
+------------------------+
| 1 172.16.1.7 web01 |
+------------------------+
| 2 172.16.1.8 web02 |
+------------------------+
| 3 172.16.1.31 nfs |
+------------------------+
| 4 172.16.1.41 backup |
+------------------------+
| 5 172.16.1.51 db01 |
+------------------------+
| 6 172.16.1.52 db02 |
+------------------------+
| 7 172.16.1.53 db03 |
+------------------------+
| 8 172.16.1.54 db04 |
+------------------------+
| 9 172.16.1.61 m01 |
+------------------------+
| 10 172.16.1.71 zabbix |
+------------------------+
| 输入 h 查看帮助菜单 |
+------------------------+
| 按 q 退出程序 |
+------------------------+
EOF
menu
trap "" HUP INT TSTP
while true;do
read -p 请输入需要连接的主机: host
case $host in
1|172.16.1.7|web01)
echo 连接 172.16.1.7 web01
;;
2|172.16.1.8|web02)
echo 连接 172.16.1.8 web02
;;
3|172.16.1.31|nfs)
echo 连接 172.16.1.31 nfs
;;
h)
clear
menu
;;
q)
exit
;;
*)
echo "Usage: $0 请输入主机名或者IP或者菜单编号..."
esac
done
以上是关于CentOS shell-case语句的主要内容,如果未能解决你的问题,请参考以下文章