【效率工具】史上最好用的SSH一键登录脚本,第三版更新!
说明
时隔一周,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的话就非常感谢啦。
【效率工具】史上最好用的SSH一键登录脚本,第三版更新!的更多相关文章
- 【效率工具】史上最好用的SSH一键登录脚本,超强更新!
说明 虽然已经是凌晨,但丝毫不能掩盖我激动的心情,今天完成了对GotoSSH的一次大更新,新增了两个肥肠实用的功能,我只能说,是真的好用,话不多说,先来看效果图: 普通的一键登录: 一键登录跳板机,然 ...
- 【效率工具】SSH一键登录脚本(可一键从跳板机登录线上服务器)
说明 前阵子上线,一次性上了十个服务,一直上到凌晨才完事,期间每个服务都要先输入跳板机的登录信息来登录跳板机,然后再输入线上服务器的信息来登录线上服务器,实在是太过于麻烦,而且有些服务还有好几台服务器 ...
- [开发工具] 史上最全系列之开发环境搭建之DDMS
原文链接:http://www.eoeandroid.com/forum.php?mod=viewthread&tid=275774 一.简介 DDMS 的全称是DalvikDebug Mon ...
- 痞子衡嵌入式:史上最强i.MX RT学习资源汇总(持续更新中...)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MX RT学习资源. 类别 资源 简介 官方汇总 i.MXRT产品主页 恩智浦官方i.MXRT产品主页,最权威的资料都在这里,参考手 ...
- 观【史上最牛linux视频教程】整理笔记,持续更新……
//文件处理命令 命令格式:命令 [-参数] [参数] 例:ls -la /etc -a等于--all //目录处理命令:ls 英文原意:list 所在路径:/bin/ls 语法:ls 选项[-ald ...
- .Net开源数据库设计工具Mr.E For Linq (EF 6.1) 教程(三)更新已发布的数据库
项目发布到服务器后,如果在后期,数据库的结构发生变更,如何更新到服务器呢? 首先,右键点击数据库,导出结构脚本文件 把脚本文件和 Mr.E.rar拷贝到服务器,在服务器解压Mr.E,运行其中的“更新数 ...
- 吐血总结|史上最全的MySQL学习资料!!
在日常工作与学习中,无论是开发.运维.还是测试,对于数据库的学习是不可避免的,同时也是日常工作的必备技术之一.在互联网公司,开源产品线比较多,互联网企业所用的数据库占比较重的还是MySQL. 在刚刚出 ...
- spring + spring mvc + tomcat 面试题(史上最全)
文章很长,而且持续更新,建议收藏起来,慢慢读! 高并发 发烧友社群:疯狂创客圈(总入口) 奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : 极致经典 + 社群大片好评 < Java 高并发 三 ...
- Linux面试题(史上最全、持续更新、吐血推荐)
文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...
随机推荐
- Spring面试底层原理的那些问题,你是不是真的懂Spring?
1.什么是 Spring 框架?Spring 框架有哪些主要模块?Spring 框架是一个为 Java 应用程序的开发提供了综合.广泛的基础性支持的 Java 平台.Spring帮助开发者解决了开发中 ...
- JavaScript几个作用域问题
1. var a = 0 ; function f(){ a = 1; console.log(a); //全局变量a } console.log(a); //全局变量a f(); 输出结果为:1 1 ...
- Vagrant Ansible Playbook 安装一群虚拟机
https://docs.ansible.com/ https://favoorr.github.io/2017/01/06/vagrant-virtualbox-vagrantfile-config ...
- XMPP大杂烩
XMPP大杂烩 对XMPP的理解 XMPP是基于XML的即时通讯协议.对即时通讯场景进行了高度抽象,比如用订阅对方的上下线状态表示好友.提供了文本通讯.用户上下线通知.联系人管理.群组聊天等功能,还可 ...
- 线程池ThreadPool及Task调度死锁分析
近1年,偶尔发生应用系统启动时某些操作超时的问题,特别在使用4核心Surface以后.笔记本和台式机比较少遇到,服务器则基本上没有遇到过. 这些年,我写的应用都有一个习惯,就是启动时异步做很多准备工作 ...
- linux 命令 — 文件相关
使用文件相关命令 dd 用来生成任意大小的文件 dd if=/dev/zero of=junk.data bs=1m count=1 生成一个1m大小的文件,里面全部使用0填充 if: 指定输入文件, ...
- Ansible批量更新远程主机用户密码 (包括Ansible批量做ssh互信)
按照集团运维信息安全制度, 需要每个一段时间对线上服务器密码进行一次变更,通过shell脚本部署比较繁琐,所以决定采用ansible脚本对远程主机root密码进行批量重置,该脚本已经在稳定运行在正式环 ...
- 项目实战2.1—nginx 反向代理负载均衡、动静分离和缓存的实现
总项目流程图,详见 http://www.cnblogs.com/along21/p/8000812.html 实验一:实现反向代理负载均衡且动静分离 1.环境准备: 机器名称 IP配置 服务角色 备 ...
- python包导入细节
包导入格式 导入模块时除了使用模块名进行导入,还可以使用目录名进行导入.例如,在sys.path路径下,有一个dir1/dir2/mod.py模块,那么在任意位置处都可以使用下面这种方式导入这个模块. ...
- μC/OS-II 任务的同步与通信 --- 消息邮箱
简介 如果把数据缓冲区的指针赋给一个事件控制块的成员 OSEventPrt,同时使事件控制块的成员 OSEventType 为常数 OS_EVENT_TYPE_MBOX,则该事件控制块就叫做消息邮箱, ...