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

一鍵登錄跳板機,然后跳轉登錄線上服務器:


一鍵登錄跳板機查看指定日志:

一鍵登錄跳板機后跳轉線上服務器查看指定日志:

然后是更加勁爆內容,一鍵從跳板機復制指定文件到本地:

一鍵從生產環境復制指定文件到本地:


我只能說,是真的強。
Shell腳本
Shell腳本已經發布到了github上,鏈接在此:https://github.com/MFrank2016/GotoSSH
可自行前往下載,好用的話別忘了給個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]
command=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]
command=tail -f -n 10 testlog.log
Server1 表示以下是為第一台服務器設置的命令,同理Server2則表示為第二台設置的命令。對於順序沒有要求,只要為需要設置自定義命令的服務器添加該選項即可。
command 是命令的名字,可以隨意取名,最好簡單一點,方便輸入,等號后面是實際執行的命令。
舉個栗子:
gotossh 1 command
只要你小手一點回車,腳本便會自動幫你登錄到第一台服務器,然后執行上面的命令tail -f -n 10 testlog.log。
注意,如果你輸入的命令需要密碼的話,需要在命令后面把密碼也帶上,並且用|分隔。
舉個栗子:
[Server1]
command=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
解決了什么問題
- 查詢線上服務器日志的時候,需要先登錄跳板機,然后再登錄服務器,過程比較麻煩。需要多次查看服務器信息,如,ip,用戶名,密碼等,查看后還需要來回進行復制。利用GotoSSH,配置好服務器信息之后,可以直接一鍵跳轉。
- 增加了登錄服務器后執行自定義命令,這一點主要是在查看日志的時候,還需要先去查看一下服務的日志路徑,然后再切回來看日志,既然每次都是模板式操作,為何不簡化一下呢?
- 服務器上有時候操作很不方便,因為對權限做了嚴格的限制,很多命令無法使用,所以增加了對
scp命令的支持,可以將線上服務器日志一鍵拷貝到本地,豈不是美滋滋。
最后再貼一下項目地址:https://github.com/MFrank2016/GotoSSH
如果覺得還不錯,別忘了加個star✨也歡迎關注我的公眾號留言交流。

