自己写的脚本,可以放在:/usr/local/bin/xxx
```
#!/bin/bash
#
https://gist.github.com/pkuczynski/8665367parse_yaml() {
local prefix=$2
local s='[[:space:]]*' w='[a-zA-Z0-9_]*' fs=$(echo @|tr @ '\034')
sed -ne "s|^\($s\)\($w\)$s:$s\"\(.*\)\"$s\$|\1$fs\2$fs\3|p" \
-e "s|^\($s\)\($w\)$s:$s\(.*\)$s\$|\1$fs\2$fs\3|p" $1 |
awk -F$fs '{
indent = length($1)/2;
vname[indent] = $2;
for (i in vname) {if (i > indent) {delete vname[i]}}
if (length($3) > 0) {
vn=""; for (i=0; i<indent; i++) {vn=(vn)(vname[i])("_")}
printf("%s%s%s=\"%s\"\n", "'$prefix'",vn, $2, $3);
}
}'
}
config_yml=$HOME/secret/server.yml
echo "欢迎使用快捷登录软件"
eval $(parse_yaml "${config_yml}" config_)
select server in $config_server; do
if [ ! -z "$server" ];then
break;
fi
done
# 都是一些默认值
port=config_${server}_port
port=${!port}
if [ -z "$port" ];then
port=22
fi
hostname=config_${server}_hostname
hostname=${!hostname}
if [ -z "$hostname" ];then
echo "不存在服务器配置,自动退出\n"
exit 0
fi
username=config_${server}_username
username=${!username}
if [ -z "$username" ];then
username=root
fi
password=config_${server}_password
password=${!password}
# 证书信息
pem=config_${server}_pem
pem=${!pem}
cmd="-o ServerAliveInterval=60 -p $port $username@$hostname"
if [ ! -z "$pem" ];then
cmd="-i ${pem} ${cmd}"
fi
# 跳板机
# ssh -J user1@host1:port1,user2@host2:port2 user3@host3:port3
proxy_jump=config_${server}_proxy_jump
proxy_jump=${!proxy_jump}
if [ ! -z "$proxy_jump" ]; then
cmd="-J ${proxy_jump} ${cmd}"
fi
# 加上 scp 前缀
cmd="ssh ${cmd}"
if [ ! -z "$password" ];then
cmd="sshpass -p ${password} ${cmd}"
fi
echo $cmd
eval $cmd
```
配置文件放在:$HOME/secret/server.yml
```
server name1 name2
name1:
hostname: 127.0.0.1
port: 22
username: root
password: 123456
pem: /path/to/xxx.pem
proxy_jump: 192.168.0.1:444
name2:
...
```