跳板机虽然可以无密码登录,但是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