0
点赞
收藏
分享

微信扫一扫

shell case语句

写一个跳板机

#!/bin/bash

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 |
+------------------------+
EOF

read -p '请输入需要连接的主机:' host

if [ $host == '1' -o $host == '172.16.1.7' -o $host == 'web01' ];then
#ssh 172.16.1.7
echo '连接 172.16.1.7 web01'
elif [ $host == '2' -o $host == '172.16.1.8' -o $host == 'web02' ];then
echo '连接 172.16.1.8 web02'
elif [ $host == '3' -o $host == '172.16.1.31' -o $host == 'nfs' ];then
echo '连接 172.16.1.31 nfs'
elif [ $host == '4' -o $host == '172.16.1.41' -o $host == 'backup' ];then
echo '连接 172.16.1.41 backup'
elif [ $host == '5' -o $host == '172.16.1.51' -o $host == 'db01' ];then
echo '连接 172.16.1.51 db01'
elif [ $host == '6' -o $host == '172.16.1.52' -o $host == 'db02' ];then
echo '连接 172.16.1.52 db02'
elif [ $host == '7' -o $host == '172.16.1.53' -o $host == 'db03' ];then
echo '连接 172.16.1.53 db03'
elif [ $host == '8' -o $host == '172.16.1.54' -o $host == 'db04' ];then
echo '连接 172.16.1.54 db04'
elif [ $host == '9' -o $host == '172.16.1.61' -o $host == 'm01' ];then
echo '连接 172.16.1.61 m01'
elif [ $host == '10' -o $host == '172.16.1.71' -o $host == 'zabbix' ];then
echo '连接 172.16.1.71 zabbix'
fi


if
fi


do
done

case
esac

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;31myjt\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

cat_eof(){
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
}

IP_key(){
ls -l ~/.ssh/id_rsa &>/dev/null || ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa &>/dev/null
nc -z 172.16.1.$1 22
if [ $? -eq 0 ];then
sshpass -p 1 ssh-copy-id -o 'StrictHostKeyChecking no' -i ~/.ssh/id_rsa.pub root@172.16.1.$1 &>/dev/null
return 1
fi
}

ssh_IP(){
ssh root@172.16.1.$1
}

cat_eof

trap "" INT QUIT TSTP TERM HUP
while true;do
read -p '请输入需要连接的主机:' host
case $host in
1|172.16.1.7|web01)
echo '连接 172.16.1.7 web01'
IP_key 7
if [ $? -ne 1 ];then
echo " 连接22端口失败 未进行密钥推送"

fi
ssh_IP 7
;;

2|172.16.1.8|web02)
echo '连接 172.16.1.8 web02'
IP_key 8
if [ $? -ne 1 ];then
echo " 连接22端口失败 未进行密钥推送"

fi
ssh_IP 8
;;

3|172.16.1.31|nfs)
echo '连接 172.16.1.31 nfs'
IP_key 31
if [ $? -ne 1 ];then
echo " 连接22端口失败 未进行密钥推送"

fi
ssh_IP 31
;;

4|172.16.1.41|backup)
echo '连接 172.16.1.41 nfs'
IP_key 41
if [ $? -ne 1 ];then
echo " 连接22端口失败 未进行密钥推送"

fi
ssh_IP 41
;;

5|172.16.1.51|db01)
echo '连接 172.16.1.51 nfs'
IP_key 51
if [ $? -ne 1 ];then
echo " 连接22端口失败 未进行密钥推送"

fi
ssh_IP 51
;;

6|172.16.1.52|db02)
echo '连接 172.16.1.52 nfs'
IP_key 52
if [ $? -ne 1 ];then
echo " 连接22端口失败 未进行密钥推送"

fi
ssh_IP 52
;;

7|172.16.1.53|db03)
echo '连接 172.16.1.53 nfs'
IP_key 53
if [ $? -ne 1 ];then
echo " 连接22端口失败 未进行密钥推送"

fi
ssh_IP 53
;;

8|172.16.1.54|db04)
echo '连接 172.16.1.54 nfs'
IP_key 54
if [ $? -ne 1 ];then
echo " 连接22端口失败 未进行密钥推送"

fi
ssh_IP 54
;;

9|172.16.1.61|m01)
echo '连接 172.16.1.61 nfs'
IP_key 61
if [ $? -ne 1 ];then
echo " 连接22端口失败 未进行密钥推送"

fi
ssh_IP 61
;;

10|172.16.1.71|zabbix)
echo '连接 172.16.1.71 nfs'
IP_key 71
if [ $? -ne 1 ];then
echo " 连接22端口失败 未进行密钥推送"

fi
ssh_IP 61
;;

q)
read -p '请输入退出跳板机的密码: ' -s mima
if [ $mima -eq 123 ];then
exit
else
clear
echo '密码输入有误'

fi
;;

h)
clear
cat_eof
;;

*)
echo " 输入错误 请输入主机名 或者IP 或者菜单编号"
esac
done

# 加入系统启动文件:
cp jump.sh /etc/profile.d/
# 更改脚本权限:
chomd +x /etc/profile.d/jump.sh


举报

相关推荐

0 条评论