【效率工具】史上最好用的SSH一鍵登入指令碼,超強更新!

弗蘭克的貓發表於2019-03-29

說明

雖然已經是凌晨,但絲毫不能掩蓋我激動的心情,今天完成了對GotoSSH的一次大更新,新增了兩個肥腸實用的功能,是真的好用,話不多說,先來看效果圖:

普通的一鍵登入:

【效率工具】史上最好用的SSH一鍵登入指令碼,超強更新!

一鍵登入跳板機,然後跳轉登入線上伺服器:

【效率工具】史上最好用的SSH一鍵登入指令碼,超強更新!

【效率工具】史上最好用的SSH一鍵登入指令碼,超強更新!

一鍵登入跳板機檢視指定日誌:

【效率工具】史上最好用的SSH一鍵登入指令碼,超強更新!

一鍵登入跳板機後跳轉線上伺服器檢視指定日誌:

【效率工具】史上最好用的SSH一鍵登入指令碼,超強更新!

然後是更加勁爆內容,一鍵從跳板機複製指定檔案到本地:

【效率工具】史上最好用的SSH一鍵登入指令碼,超強更新!

一鍵從生產環境複製指定檔案到本地:

【效率工具】史上最好用的SSH一鍵登入指令碼,超強更新!

20190329003615.png

我只能說,是真的強。

Shell指令碼

Shell指令碼已經發布到了github上,連結在此:github.com/MFrank2016/…

可自行前往下載,好用的話別忘了給個star。

安裝依賴

CentOS :

$ sudo yum install -y expect
複製程式碼

Ubuntu :

$ sudo apt-get install tcl tk expect
複製程式碼

Mac :

$ sudo brew install expect
複製程式碼

安裝 GotoSSH

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

配置

$ vim ~/.gotossh_config
server_name|ip|username|password|port|rely_server_no

[Server1]
commend=tail -f -n 10 testlog.log

[scp]
log1=~/testlog.log
複製程式碼

配置檔案由三部分組成。

第一部分是伺服器的基本資訊。

server_name|ip|username|password|port|rely_server_no
複製程式碼

舉個栗子:

JumpServer1|118.24.163.31|root|testpassword|22|0
OnlineServerB|111.231.59.85|root|testpassword2|22|1
複製程式碼

最後一列是代表該伺服器依賴於哪個伺服器,如果該列的值設定為0,代表不依賴於其他伺服器,否則代表需要先登入其他伺服器後才能登入該伺服器,目前暫時只支援二連跳,不支援多跳轉。

第二部分是自定義命令,你可以在這裡為每臺伺服器單獨設定一些自定義命令。

[Server1]
commend=tail -f -n 10 testlog.log
複製程式碼

Server1 表示以下是為第一臺伺服器設定的命令,同理Server2則表示為第二臺設定的命令。對於順序沒有要求,只要為需要設定自定義命令的伺服器新增該選項即可。

commend 是命令的名字,可以隨意取名,最好簡單一點,方便輸入,等號後面是實際執行的命令。

舉個栗子:

gotossh 1 commend
複製程式碼

只要你小手一點回車,指令碼便會自動幫你登入到第一臺伺服器,然後執行上面的命令tail -f -n 10 testlog.log

注意,如果你輸入的命令需要密碼的話,需要在命令後面把密碼也帶上,並且用|分隔。

舉個栗子:

[Server1]
commend=scp root@111.231.59.85:/var/log/test-service/test-service.log ./test-server.log|testpassword2
複製程式碼

當然,強烈建議不要將類似rm -rf xxx等敏感操作放到這裡,因為如果配置不當,容易引發事故。

配置檔案的最後一部分是對於scp命令的支援。

[scp]
log1=~/testlog.log
log2=/var/log/test-service/test-service.log
複製程式碼

log1 和 log2 都是隨意起的名字,後面是伺服器上你想要複製的檔案路徑,配置好之後,你就可以這樣使用:

gotossh 1 scp log1
複製程式碼

它就會自動把第一臺伺服器上的~/testlog.log檔案複製到你的本地。

gotossh 2 scp log2
複製程式碼

這個操作就更厲害了,因為第二臺伺服器設定了對第一臺伺服器的依賴,所以它會先登入第一臺伺服器,然後再複製第二臺伺服器上的檔案到第一臺伺服器上,最後,退出伺服器到本地,將第一臺伺服器上的複製品再拷貝到本地。

配置檔案舉例

$ vim ~/.gotossh_config
JumpServer1|118.24.163.31|root|testpassword|22|0
OnlineServerB|111.231.59.85|root|testpassword2|22|1

[Server1]
log=tail -f -n 20 testlog.log

[Server2]
log=tail -f -n 20 /var/log/test-service/test-service.log
cd=cd /var/log/test-service/

[scp]
log3=~/testlog.log
log4=/var/log/test-service/test-service.log
複製程式碼

用法

$ gotossh
######################################################################################
#                                  [GOTO SSH]                                        #
#                                                                                    #
#                                                                                    #
# [1] test_server - 192.168.0.1:root                                                 #
# [2] online_server - 192.168.2.2:root                                               #
#                                                                                    #
#                                                                                    #
######################################################################################
Server Number:(Input Server Number Here)
複製程式碼
gotossh 1
gotossh 2
gotossh 1 log
gotossh 2 log
gotossh 2 cd
gotossh 1 scp log3
gotossh 2 scp log4
複製程式碼

解決了什麼問題

  1. 查詢線上伺服器日誌的時候,需要先登入跳板機,然後再登入伺服器,過程比較麻煩。需要多次檢視伺服器資訊,如,ip,使用者名稱,密碼等,檢視後還需要來回進行復制。利用GotoSSH,配置好伺服器資訊之後,可以直接一鍵跳轉。
  2. 增加了登入伺服器後執行自定義命令,這一點主要是在檢視日誌的時候,還需要先去檢視一下服務的日誌路徑,然後再切回來看日誌,既然每次都是模板式操作,為何不簡化一下呢?
  3. 伺服器上有時候操作很不方便,因為對許可權做了嚴格的限制,很多命令無法使用,所以增加了對scp命令的支援,可以將線上伺服器日誌一鍵拷貝到本地,豈不是美滋滋。

最後再貼一下專案地址:github.com/MFrank2016/…

如果覺得還不錯,別忘了加個star✨也歡迎關注我的公眾號留言交流。

【效率工具】史上最好用的SSH一鍵登入指令碼,超強更新!

相關文章