zoukankan      html  css  js  c++  java
  • 【效率工具】史上最好用的SSH一键登录脚本,超强更新!

    说明

    虽然已经是凌晨,但丝毫不能掩盖我激动的心情,今天完成了对GotoSSH的一次大更新,新增了两个肥肠实用的功能,我只能说,是真的好用,话不多说,先来看效果图:

    普通的一键登录:

    一键登录跳板机,然后跳转登录线上服务器:

    一键登录跳板机查看指定日志:

    一键登录跳板机后跳转线上服务器查看指定日志:

    然后是更加劲爆内容,一键从跳板机复制指定文件到本地:

    一键从生产环境复制指定文件到本地:

    20190329003615.png

    我只能说,是真的强。

    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
    

    解决了什么问题

    1. 查询线上服务器日志的时候,需要先登录跳板机,然后再登录服务器,过程比较麻烦。需要多次查看服务器信息,如,ip,用户名,密码等,查看后还需要来回进行复制。利用GotoSSH,配置好服务器信息之后,可以直接一键跳转。
    2. 增加了登录服务器后执行自定义命令,这一点主要是在查看日志的时候,还需要先去查看一下服务的日志路径,然后再切回来看日志,既然每次都是模板式操作,为何不简化一下呢?
    3. 服务器上有时候操作很不方便,因为对权限做了严格的限制,很多命令无法使用,所以增加了对scp命令的支持,可以将线上服务器日志一键拷贝到本地,岂不是美滋滋。

    最后再贴一下项目地址:https://github.com/MFrank2016/GotoSSH

    如果觉得还不错,别忘了加个star✨也欢迎关注我的公众号留言交流。

  • 相关阅读:
    简简单单制作鼠标静态动态 ani cur 小结 鼠标形状指针
    【VB6 学习文档管理系统源码】
    Delphi 中的全局快捷键+给指定窗体发送按键
    C# 委托实例实现的多种类型
    PyCharm 上传项目到码云托管平台
    vs rdlc 设置Tablix 在新页面重复表头
    .net C# Chart控件的简单使用
    发邮件,阿里云,未指定邮件服务器端口导致的报错
    使用Quartz Job 简单的做一个定时服务
    FromBase64String 输入的不是有效的 Base-64 字符串,因为它包含非 Base-64 字符、两个以上的填充字符,或者填充字符间包含非法字符
  • 原文地址:https://www.cnblogs.com/mfrank/p/10619263.html
Copyright © 2011-2022 走看看