【效率工具】史上最好用的SSH一鍵登陸腳本,第三版更新!

說明

時隔一週,GotoSSH又迎來了一次重大更新,讓這個史詩級的shell工具變得更加絲般順滑了~git

此次的主要更新是對自定義全局命令以及自定義屬性的支持,讓設置更加靈活,此外,對各個細節進行了調整,並修復了一些極少數狀況下可能會發生的bug。github

另外,最重要的一點是,對代碼進行了大量優化和註釋,讓小白也能很輕鬆的看懂各個地方是在作什麼事情,畢竟對於服務器信息這麼隱私的信息,交給一個第三方shell來管理,你們不免會有些不放心嘛,這個能夠理解,因此特地作了這個更新,讓你們能放心食用。shell

有能力的小夥伴也能夠把這個shell腳本自行改進,讓它變得更加好用,若是有其餘想法,歡迎提出,會考慮在後續更新中進行添加。服務器

更新後樣式

普通的一鍵登陸到服務器:ssh

先登陸跳板機,而後自動跳轉到線上服務器:函數

登陸服務並查看日誌:工具

登陸跳板機,而後跳轉線上服務器並查看指定日誌:優化

從服務器複製文件到本地:3d

從線上服務器複製文件到跳板機,而後再複製到本地:調試

列舉全部服務器:

列舉服務器支持的全部命令:

list-all-the-commands.gif

v3版本更新功能

  • 新增了兩個命令,一個是查看服務器列表,一個是查看支持的命令列表。

由於有小夥伴反映說,記不住哪一個服務器是幾號,每次須要先輸入gotossh來查看,而後再ctrl + c退出,以後再進行長命令操做,感受不太優雅。emmmm,因而就有了這麼個功能:

如今可使用gotossh -l查看全部的服務器列表了。

此外,順便增長了對自定義命令的更友好支持,一是在選擇完服務器後,會顯示該服務器支持的命令列表,包括該服務器的自定義命令,以及全局命令。

list-all-the-commands.gif

  • 配置文件中,新增了setting節點和common-command節點。

前者是用於設置全局配置信息,目前僅有version信息,用於以後的升級迭代。後續會考慮加入如顏色,顯示方案等自定義配置。

後者即全局公用命令,能夠看作是模板命令,爲何要作這個功能呢?

不少服務的日誌地址實際上是相似的,好比A服務的日誌地址也許是:/var/log/server-a/service-a.log,B服務的日誌地址也許是:/var/log/server-b/server-b.log,它們的大體路徑實際上是差很少的,因此若是有了模板命令,咱們便不須要給每一個服務器來單獨設置一個自定義命令了,只須要在該自定義屬性中配置相應屬性便可。

好比設置一條模板命令:

[common-command]
log=/var/log/[service-name]/[service-name].log

再爲服務a和服務b設置相應的屬性:

[Server-Attribute-service-a]
service-name=service-a

[Server-Attribute-service-b]
service-name=service-b

這樣一來,使用就更加優雅了,管理起來也更加方便。

  • 配置文件中,服務器信息的分割符由原來的「|」改爲了「||」

由於考慮到密碼中可能含有「|」,因此進行了上述調整,不過仍舊無法解決密碼中存在「||」的狀況,emmm,這種狀況應該很少,暫時先不考慮了。

  • 配置文件中,改用link_name做爲服務器標識

以前配置自定義命令時,使用的是Server-ServerNo的形式,但若是服務器數量比較多,刪除前面的服務器配置後,會致使後面的服務器編號改變,這樣就須要對自定義節點進行調整,比較麻煩,因此使用Server-link_name來做爲節點名稱就是來解決這個問題的。

  • 配置文件中,新增了自定義屬性

上面其實已經看到過了,能夠新增Server-Attribute-link_name節點來設置服務器的自定義屬性,這個自定義屬性能夠用在自定義命令或者全局公用命令中進行替換。

另外,還新增了兩個特殊的自定義屬性[P1][P2],分別表明傳入腳本的第三個和第四個參數,舉個栗子:

[Server-service-a]
cd=cd [P1]

使用如上配置後,當輸入gotossh 1 cd /var/log/service-a(假設service-a是第一臺服務器)後,將會先登陸該服務器,而後執行cd /var/log/service-a命令,這裏[P1]將會被傳入腳本的第三個參數/var/log/service-a所替代,同理,還能夠在命令中使用[P2],它將被第四個參數替代。

  • 新增了大量註釋,讓代碼看起來更加清晰

目的在前面已經說過了,這裏就再也不贅述了,但願你們多提建議,一塊兒來讓這個shell腳本變得更好好用。

舊版本升級

若是你已經使用了以前的版本,那麼使用新版本的話,你須要進行如下操做:

一、進入/usr/local/bin/刪除原來的shell

二、安裝依賴

$ brew install gnu-sed --with-default-names
$ export PATH="$(brew --prefix coreutils)/libexec/gnubin:/usr/local/bin:$PATH"
$ export MANPATH="/usr/local/opt/coreutils/libexec/gnuman:$MANPATH"

三、拉取最新代碼並安裝

$ git clone https://github.com/MFrank2016/GotoSSH.git
$ cd GotoSSH
$ chmod a+x gotossh
$ sudo cp gotossh /usr/local/bin/

shell裏已經寫好了配置升級的函數,因此不用太擔憂舊配置的調整。若是想要使用新功能的話,參照上面的說明,添加相應的節點,如common-command便可。

小結

GotoSSH雖然只是一個小的腳本,可是說實話,這個幾百行的腳本調試起來可真的不容易,無法打斷點就只能用輸出的方式一點點的排查問題,比較蛋疼,清明節花了一成天的時間才調試好,但願你們能多多支持一下,給項目加個star的話就很是感謝啦。

相關文章
相關標籤/搜索