說明
時隔一周,GotoSSH又迎來了一次重大更新,讓這個史詩級的shell工具變得更加絲般順滑了~
這次的主要更新是對自定義全局命令以及自定義屬性的支持,讓設置更加靈活,此外,對各個細節進行了調整,並修復了一些極少數情況下可能會發生的bug。
另外,最重要的一點是,對代碼進行了大量優化和注釋,讓小白也能很輕松的看懂各個地方是在做什么事情,畢竟對於服務器信息這么隱私的信息,交給一個第三方shell來管理,大家難免會有些不放心嘛,這個可以理解,所以特意做了這個更新,讓大家能放心食用。
有能力的小伙伴也可以把這個shell腳本自行改進,讓它變得更加好用,如果有其他想法,歡迎提出,會考慮在后續更新中進行添加。
更新后樣式
普通的一鍵登錄到服務器:
先登錄跳板機,然后自動跳轉到線上服務器:
登錄服務並查看日志:
登錄跳板機,然后跳轉線上服務器並查看指定日志:
從服務器復制文件到本地:
從線上服務器復制文件到跳板機,然后再復制到本地:
列舉所有服務器:
列舉服務器支持的所有命令:
v3版本更新功能
- 新增了兩個命令,一個是查看服務器列表,一個是查看支持的命令列表。
因為有小伙伴反映說,記不住哪個服務器是幾號,每次需要先輸入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腳本變得更好好用。
舊版本升級
如果你已經使用了之前的版本,那么使用新版本的話,你需要進行以下操作:
1、進入/usr/local/bin/
刪除原來的shell
2、安裝依賴
$ 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"
3、拉取最新代碼並安裝
$ 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的話就非常感謝啦。