![9c419d0cad8d1a9d03f8dec899c05401.png](https://i-blog.csdnimg.cn/blog_migrate/88dcbbaad81d3d6128576af564a64ade.jpeg)
使用SecureCRT痛苦之后的崛起
mac 系统上我一直少有发现一款好用的 ssh 工具, 免去我记住多个密码的烦恼.
经过大量时间的寻找, 我发现了一款名为 SecureCRT 的工具, 可以在 mac 系统上使用, 的确可以免除我记住大量密码的烦恼, 但是使用的痛苦也随之而来.
- 不存在清理屏幕的快捷键
经常登录服务器进行测试环境的日志查阅, 这个时候, 界面上停留的可能有进入多少级目录, 然后打了什么命令, 已经其他很多无关紧要的东西在上面. 这个时候清理屏幕就显的很重要, 但是 CRT 不支持. 只能傻傻的通过工具栏上方的按钮去清除屏幕. - vim 之后不能滚轮滑动
文字已经很能说明问题了, 我就不多赘述. - 我自己的 Iterm2 上操作的很开心, 不能用他我就不开心
这一点尤为重要.
基于以上三个问题, 我决定翻出去年写的那个已经不能用的脚本来搞好他.
之前的脚本存在几个问题
- 不能展示出来列表
我目前存了多少个服务器, 我记不住, 也不能展示出来 - 好端端的坏了
进入服务器之后, 啥也不能干.
通过网上苦苦的搜索, 我找到一个朋友写的一个东西非常棒. fork 了他的项目, 改编了一下, 使其能更好的适用于我的电脑.
此处感谢 AlicFeng 的文章给我的帮助, 此处是github 地址.
首先说说为什么要重写
- 电脑上下载的时候总是提示需要管理员的权限, 但是已经使用了, 不厌其烦
- 废了好多功夫弄到本地之后, 感觉不是太会用. 这一点很尴尬.
- 简书评论区 2 楼回复的很好, 在此引用一下
-s 登录的时候,后面的编号并不是 ini 文件中的 Index 项,而是取决于 shell 过滤出来的 ini 文件顺序
基于上面 3 点功能, 打算小小的改造一下.
首先解决重点解决第三个问题.
AlicFeng 之前使用的是集合, 顺序得不到保证. 因此, 我在想, 是不是可以用 Map 类型来存储.
经过查阅资料, 发现 Map 数据类型和 bash 相关, mac 下的 bash 是 3.x, 但是 Map 数据类型必须要 4.x 以上.
于是乎, 需要升级个 bash.
方法一: 更换系统的 bash, 需要重启电脑
mac 升级 bash 之前需要关闭 SIP(System Integrity Protection). 网上有很多文章关于如何操作, 先简单介绍一下, 不清楚的可以去查阅资料. 首先重启电脑, 并按住 command+r 键, 进入恢复模式. 进入恢复模式的系统之后, 打开上方工具栏中"实用工具"下的"终端". 在终端中输入
csrutil disable
成功之后, 重启电脑. 这个时候就可以升级 bash 了. 打开 iterm2, 输入命令
brew install bash
升级成功之后输入如下命令
# 替换bash
sudo mv /bin/bash /bin/bash.origin
sudo ln -s /usr/local/opt/bash/bin/bash /bin/bash
# 由于本mac版本下的sh并不是直接链接bash,而是bash的一个文件拷贝。因此,还要替换默认的sh指向的命令为bash,如下:
sudo mv /bin/sh /bin/sh.origin
sudo ln -s /usr/local/opt/bash/bin/bash /bin/sh
这个时候可以通过命令来查看是否成功
bash --version
安装之后, 就可以重启电脑, 把 SIP 给启动. 同样进入恢复模式下输入
csrutil enable
然后重启电脑.
方法二: 直接下载新的 bash, 无需重启电脑
打开 iterm2, 输入命令
brew install bash
这个时候需要把下载下来的 lucy 脚本的 "开头"部分, 加上一小段说明
#!/usr/local/bin/bash
表示使用我们当前下载下来的 bash, 而不是系统目录下面的 bash
还是打开 iterm2, 这个时候, 安装一个小插件, 让界面更漂亮
brew install toilet
安装好之后, 就进入了正文.
首先介绍下, 文件路径.
首先到~目录下, 创建一个文件夹
mkdir ssh-lucy
创建一个 servers 的文件. (无后缀).
文件中内容放入以下东西
#服务器IP 账号 密码 端口 主机
实际最后放入的东西内容如下图所示
![6460498b54cd7361efa73fe8c649c216.png](https://i-blog.csdnimg.cn/blog_migrate/f9104b64ca14325349d1a5f0f344cb02.jpeg)
最后的主机一列, 存放的是我们用于寻找登录哪个服务器的名称, 也就是我们存入 Map 中的 key, 可以自定义.
存好服务器地址之后, 就可以使用我们真正的脚本.
服务器脚本最后保留一个空行.
我给她起了一个非常人性化的名字, 也是我心心念念的名字"lucy"(人类的始祖
从 gayhub 上下载文件"lucy"之后, 放入本地的
/usr/local/bin
目录.
修改文件中的第十行内容"目录"为 servers 存在的绝对路径.
然后赋予这个文件生命
chmod +x lucy
此刻大公告成.
此刻存在的命令如下, 延续了 AlicFeng 之前的命名
// l表示list, 表示查看列表(不包含密码)
lucy -l
// h表示help, 表示帮助
lucy -h
// s 表示ssh, 也就是平时我们使用的登陆方式
lucy -s 主机名
// p表示password, 展示包含密码的查看列表
lucy -p
效果如下:
![93ad48c7ed342eb15eb2ddd83a528697.png](https://i-blog.csdnimg.cn/blog_migrate/8a9620f0f20c58874ccf4aabdf9ab9ca.jpeg)
![87fded6f372e70a513ece21ef4609a99.png](https://i-blog.csdnimg.cn/blog_migrate/1e4474351390b5d6edd667da70a18253.jpeg)
如果您使用了这个小脚本, 希望可以保留 lucy 的名字, 让我们给他一个生命的延续.
![198e42d85ef41d7fe75fcca6ea2a7c26.png](https://i-blog.csdnimg.cn/blog_migrate/4072a9553981c0114efd5bc2259b1dba.jpeg)