背景
平时工作中总是需要登录到线上服务,以解决各种问题,比如:
远程登录线上日志机器查看PHP Error Log、Mysql Error Log等
登录QA的测试机检查代码是否正常发布、各项配置是否正确
登录个人开发机
但是公司服务器都是需要通过跳板机登录,每次登录线上机器都需要先到跳板机登录一下,再登录到目标机器,很繁琐,而且必须得记得住目标机器的IP或者机器名才能尽快登录上去,要不然还得一顿查。。。
所以弄了个小工具,实现快捷登录(其实是几年前写的一个小脚本,最近升级了一下),分享出来大家使用。功能大概包括:
自定义远程机器的快捷登录方式
查看所有已配置过的快捷方式
支持跳板机和非跳板机两种场景的登录
对于任意一个有权限的机器,可以直接一条命令登录
可以指定任意账户登录线上服务器
总之,还是蛮方便的,简单的小工具,Open给大家,也许你也用得上。
一、工具下载
百度搜索go工具:go.zip
二、配置&部署
1、将文件保存到固定的某个目录
cp ~/Downloads/go ~/Documents/Tools/
2、修改权限
chmod 0755 ~/Documents/Tools/go
3、配置到环境变量中
cd /usr/bin
ln -s ~/Documents/Tools/go go
4、修改配置
vim ~/Documents/tools/go
注:需要修改的内容有:
username: 用于登录跳板机
default_user:默认已这个账户登录到线上机器
server_list:自定义的登录快捷方式
三、使用
1、查看帮助
go -h
2、查看所有快捷方式
go -list
3、以默认用户登录某线上机器
go syq-fe03
4、以指定用户登录newlab机器
go newlab xianliezhao
5、任意一台有权限的机器,但是没有配置快捷方式
go 172.16.0.31 work
6、关于配置&登录非跳板机的机器(比如我的阿里云机器)
go aliyun
四、范例
五、脚本源代码
#! /bin/sh
##################################################################
# 此工具用于快捷登录线上机器
# author:xianliezhao@meilishuo.com
##################################################################
# 你的名字,用于登录到跳板机
username="xianliezhao"
# 默认以这个账户登录到线上机器
default_user="work"
# 定义机器的快捷方式
server_list=(
#----------------------------------------------------------------------------------------------------
# "快捷方式 机器名/IP 是否需要跳板机(默认是1:需要) 用什么权限登录(默认是:$default_user)"
#----------------------------------------------------------------------------------------------------
"syq-fe01 syq-bizfe-01"
"syq-fe02 syq-bizfe-02"
"syq-fe03 syq-bizfe-03"
"syq-fe04 syq-bizfe-04"
"dfz-fe01 dfz-bizfe-01"
"dfz-fe02 dfz-bizfe-02"
"dfz-fe03 dfz-bizfe-03"
"dfz-fe04 dfz-bizfe-04"
"dfz-fe05 dfz-bizfe-05"
"dfz-fe06 dfz-bizfe-06"
"dfz-fe07 dfz-bizfe-07"
"dfz-fe08 dfz-bizfe-08"
"dfz-snake01 dfz-bizsnake-01"
"dfz-snake02 dfz-bizsnake-02"
"dfz-snake03 dfz-bizsnake-03"
"dfz-doota01 dfz-dootafe-01"
"dfz-doota02 dfz-dootafe-02"
"dfz-doota03 dfz-dootafe-03"
"aliyun www.baidufe.com 0 root"
)
# 使用帮助
help(){
echo "
远程登录工具:version 1.0
使用方法:
【1】:go 机器名 [登录账号]
用法1:
默认以work权限登录newlab ----> go newlab
用法2:
以rd权限登录newlab ----> go newlab rd
用法3:
以个人账号权限登录newlab ----> go newlab xianliezhao
【2】:查看所有机器快捷方式:
go -list
\n"
exit 1
}
# 查看所有快捷方式
show_list() {
echo "\n您可以使用快捷方式进行登录如下服务器,如:go newlab rdol\n"
echo "+------------------------------------------------------------------------------+"
for (( i=0;i<${#server_list[*]};i=i+5 ));do
A=`echo ${server_list[$i+0]} | awk '{print $1}'`
B=`echo ${server_list[$i+1]} | awk '{print $1}'`
C=`echo ${server_list[$i+2]} | awk '{print $1}'`
D=`echo ${server_list[$i+3]} | awk '{print $1}'`
E=`echo ${server_list[$i+4]} | awk '{print $1}'`
# 格式化输出
printf "%-1s %-13s %-1s %-13s %-1s %-13s %-1s %-13s %-1s %-12s %-1s\n" \
\| ${A:-' '} \| ${B:-' '} \| ${C:-' '} \| ${D:-' '} \| ${E:-' '} \|
done
echo "+------------------------------------------------------------------------------+\n"
}
# 远程登录
remote_login(){
# 默认的目标机器是$1
host=$1
# 跳板机
proxy="@osys11.meilishuo.com -t ssh "
# 如果指定了第二参数,则表示指定的账户登录
if [ "$2" != "" ];then
default_user=$2
fi
# 如果默认的登录用户是 rdol ,则在osys11机器上切换一下用户
if [ "$default_user" == "rdol" ];then
proxy=$proxy"rdol@osys11 -t ssh ";
fi
# 从server_list里查询是否有预定的快捷方式
for key in ${!server_list[*]} ; do
A=`echo ${server_list[$key]} | awk '{print $1}'` # 快捷方式
B=`echo ${server_list[$key]} | awk '{print $2}'` # 机器名/IP
C=`echo ${server_list[$key]} | awk '{print $3}'` # 是否需要通过跳板机登录
D=`echo ${server_list[$key]} | awk '{print $4}'` # 登录用户名
if [ "$host" == "$A" ];then
host=$B;
if [ "$C" == "0" ];then
proxy="";
fi
if [ ! -z $D ];then
default_user=""
username=$D
fi
break;
fi
done
# 登录目标机器
ssh $username$proxy$default_user@$host
}
clear
# 未指定参数,或者参数为 -h | --help,则出现使用帮助
if [[ "$1" == "" || "$1" == "-h" || "$1" == "--help" ]];then
help;
# 查看所有快捷方式
elif [ "$1" == "-list" ];then
show_list;
# 执行登录
else
remote_login $1 $2;
fi
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索权限
, 服务器
配置
远程连接linux服务器、远程登录linux服务器、远程访问linux服务器、远程linux服务器、远程控制linux服务器,以便于您获取更多的相关知识。