使用Shell做一个跳板机菜单

跳板机虽然可以无密码登录,但是IP毕竟不好记,之前的方法就是在xshell做快速命令,可是后来IP越来越多,xshell界面弄得不太够用。于是就抽个空,做了一个ssh连接菜单,选择题总比填空题好嘛!

执行效果如下:
抱光妹

脚本正文

shell脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/bin/bash
clear
#options=("Option 1" "Option 2" "Option 3" "Quit")
#select opt in "${options[@]}"
#quickssh是菜单文件,格式如下===>ip:端口(用途),比如:172.31.0.66:22(ec1)
#若有新增服务器,直接添加/root/quickssh文件即可

HOSTS=$(cat /root/quickssh|sort) #读取菜单
NUM=$(cat /root/quickssh|wc -l)
SSH="ssh -A -o ConnectTimeOut=5 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
user=root
usual_port=34872

select line in $HOSTS ; do
if [ $REPLY -le $NUM ]
then
echo "$line 准备连接..."
ip=$(echo $line |cut -d ':' -f 1)
unusual_port=$(echo $line | awk '{split($0,a,"[:(]");print a[2]}')
port=${unusual_port:-$usual_port}
echo ip是:$ip
echo port是: $port
$SSH -p $port "$user@$ip"
xit 0
else
echo "请输入一个正确的序号:"
fi
done

这里使用了$(a:-b)变量预赋值:若a为空或者null,则得到的是b。但是要注意这里面的a如果是变量的话,前面是不能加$的,会爆格式错误。把执行脚本命令做成alias写进~/.bashrc里,再source ~/.bashrc,以后就快速调用,更加方便。

这个脚本还有可以改进的地方,就是不只是输入序号,还可以通过输入服务器名称快速找到目标服务器,这样达到更高效!

不过如果服务器过多,还是推荐用mysql来记录。

参考资料

https://liam.page/2016/11/08/Shell-variable-reference-and-string-cut-off/
https://blog.csdn.net/x1269778817/article/details/46535729

抱光妹

感谢您请我喝咖啡~O(∩_∩)O,如果要联系请直接发我邮箱chenx1242@163.com,我会回复你的
-------------本文结束感谢您的阅读-------------