Linux服务器远程登录服务器go工具用法

作者:简简单单 2015-05-11

背景

平时工作中总是需要登录到线上服务,以解决各种问题,比如:
远程登录线上日志机器查看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

 


how-to-use-gotool-1.gif
2、查看所有快捷方式
go -list
how-to-use-gotool-2.gif
3、以默认用户登录某线上机器
go syq-fe03
how-to-use-gotool-3.gif
4、以指定用户登录newlab机器
go newlab xianliezhao
how-to-use-gotool-4.gif
5、任意一台有权限的机器,但是没有配置快捷方式
go 172.16.0.31 work
how-to-use-gotool-6.gif
6、关于配置&登录非跳板机的机器(比如我的阿里云机器)
go aliyun
how-to-use-gotool-5.gif
四、范例
五、脚本源代码
#! /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

相关文章

精彩推荐