時隔一週,GotoSSH又迎來了一次重大更新,讓這個史詩級的shell工具變得更加絲般順滑了~git
此次的主要更新是對自定義全局命令以及自定義屬性的支持,讓設置更加靈活,此外,對各個細節進行了調整,並修復了一些極少數狀況下可能會發生的bug。github
另外,最重要的一點是,對代碼進行了大量優化和註釋,讓小白也能很輕鬆的看懂各個地方是在作什麼事情,畢竟對於服務器信息這麼隱私的信息,交給一個第三方shell來管理,你們不免會有些不放心嘛,這個能夠理解,因此特地作了這個更新,讓你們能放心食用。shell
有能力的小夥伴也能夠把這個shell腳本自行改進,讓它變得更加好用,若是有其餘想法,歡迎提出,會考慮在後續更新中進行添加。服務器
普通的一鍵登陸到服務器:ssh
先登陸跳板機,而後自動跳轉到線上服務器:函數
登陸服務並查看日誌:工具
登陸跳板機,而後跳轉線上服務器並查看指定日誌:優化
從服務器複製文件到本地:3d
從線上服務器複製文件到跳板機,而後再複製到本地:調試
列舉全部服務器:
列舉服務器支持的全部命令:
由於有小夥伴反映說,記不住哪一個服務器是幾號,每次須要先輸入gotossh
來查看,而後再ctrl + c
退出,以後再進行長命令操做,感受不太優雅。emmmm,因而就有了這麼個功能:
如今可使用gotossh -l
查看全部的服務器列表了。
此外,順便增長了對自定義命令的更友好支持,一是在選擇完服務器後,會顯示該服務器支持的命令列表,包括該服務器的自定義命令,以及全局命令。
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的話就很是感謝啦。