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


說明

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

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

另外,最重要的一點是,對代碼進行了大量優化和注釋,讓小白也能很輕松的看懂各個地方是在做什么事情,畢竟對於服務器信息這么隱私的信息,交給一個第三方shell來管理,大家難免會有些不放心嘛,這個可以理解,所以特意做了這個更新,讓大家能放心食用。

有能力的小伙伴也可以把這個shell腳本自行改進,讓它變得更加好用,如果有其他想法,歡迎提出,會考慮在后續更新中進行添加。

更新后樣式

普通的一鍵登錄到服務器:

先登錄跳板機,然后自動跳轉到線上服務器:

登錄服務並查看日志:

登錄跳板機,然后跳轉線上服務器並查看指定日志:

從服務器復制文件到本地:

從線上服務器復制文件到跳板機,然后再復制到本地:

列舉所有服務器:

列舉服務器支持的所有命令:

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腳本變得更好好用。

舊版本升級

如果你已經使用了之前的版本,那么使用新版本的話,你需要進行以下操作:

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的話就非常感謝啦。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM