通过Alfred+shell自动清除ssh记录

由于工作中需要使用到很多部越狱手机,每部手机都需要ssh链接,而且都使用了usbmuxd进行2222映射22端口,所以每当我换一部手机插上电脑使用ssh -p 2222 root@localhost时,就会得到以下提示

-w600

这个提示的处理办法也很简单,就是去.ssh目录下打开known_hosts文件将[localhost]:2222这一条数据删除,然后再次登录,就会重新写入新设备的记录,就可以登录了。虽然说起来简单,步骤也没几个,但是经常要这样操作也挺烦人的,所以萌生了写一个自动清除脚本的想法。


这里我直接使用的shell命令中的sed命令来进行清除操作,很简洁,只有一行代码

sed -i "" '/localhost/d' /Users/xxxx/.ssh/known_hosts

代码的意思就是匹配known_hosts文件中包含localhost的那一行并将其删除,-i参数是指直接修改原文件

注意
这里有个坑,就是-i后面有个空的双引号"",因为Mac和普通的linuxsed命令有点不同,我在网上搜索出来的sed命令都是直接sed -i '/需要匹配的字符串/d' 原文件,但是这样直接在Mac下运行会得到以下的提示

sed: 1: "known_hosts": invalid command code k

然后经过一番查找才知道,-i后面需要添加一个字符串来备份源文件

例如下面这样写的话,就会生成一个known_hosts.bak的备份文件

sed -i ".bak" '/localhost/d' known_hosts

由于我这里不需要备份,所以就直接写的是""


结合Alfred

虽然有了这一条命令,可以很省事的删除记录了,可以将此代码做成代码块,或者使用snippets定义一个触发命令就可以了,但是但是但是,这还需要我先打开终端或者iTerm2,然后才能执行这条命令,对于懒惰的程序员是不能忍的.所以我添加了个workflows

-w855

-w486

-w777

-w564

就这么的简单,然后快捷键调出Alfred输入cl
-w586

敲一下回车
-w385

右上角就提示清除成功,然后终端里继续登录吧!


???,突然想起来,我要登录肯定我是打开了终端的,既然我都打开了终端,为啥我不直接使用snippets触发命令就可以了呢????
MDZZ

推荐阅读更多精彩内容