背景
平時工作中總是需要登入到線上服務,以解決各種問題,比如:
遠程登入線上日誌機器查看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