开发机登录时需要手动输入开发机地址,账号和密码,有点繁琐,于是决定写一个登录脚本。
本人开发机需要使用ssh登录,单纯使用shell脚本的重定向方法或者管道方法无法实现自动输入密码。因为重定向方法和管道方法都需要输入参数指定命令形式,而ssh方式无法指定,所以需要用到expect脚本(ps:shell脚本其实可以实现很多场景下的交互了~~,参考自 https://blog.csdn.net/zhangjikuan/article/details/51105166)
使用前请确保你安装了expect,安装方式自查(mac强烈推荐使用brew进行安装,可以省去tcl的安装~)
安装完成后,你可以在你喜欢的地方新建一个文件,然后输入以下内容:
#!/usr/bin/expect expect脚本标志
spawn ssh -l dalao 10.54.72.30 #登录远程开发机,填上自己的用户名和开发机地址
expect "password:" #意思是交互获取是否返回password:关键字
send "secret\n" #发送你的密码,不加\n的话,每次执行这个脚本都要再敲一次回车哦~
interact #执行完留在远程控制台,不加这句执行完后返回本地控制台
第一行的内容指定了shell脚本解释器的路径,而且这个指定路径只能放在文件的第一行。第一行写错或者不写时,系统会有一个默认的解释器进行解释。
然后在shell中输入命令:
path/to/your/file/filename.sh
我的文件后缀使用了.sh,主要是为了更容易区分这个文件的类型,别的后缀或者没有后缀也都是可以运行的。
如果你顺利登录了开发机那你就成功啦~~
expect脚本还有hin多可爱的用法,传送门:https://blog.csdn.net/nero_g/article/details/53945654
另外如果你使用iterm2的话,可以使用iterm2中的profile功能保存多个开发机登录文件,或者实现iterm默认登录开发机(还是需要自己写expect脚本,我觉得没什么意义~)
iterm2登录开发机传送门:https://www.jianshu.com/p/17e06b3887ae
第一次自己写一个脚本,过程还是非常有趣的~
有错误请疯狂指正!~