Expect脚本之一键登录

2019-01-29 11:14:59

背景

工作中常常会通过ssh登录各个服务器,我们可以直接把这些ssh信息用alias进行重命名,但是始终还是有个问题,就是密码还是得输,如果工作服务器是经过跳板机来跳转的,还得蛋疼的再ssh一下,那我们有没有啥办法能解决这个呢?有!用expect

Expect

From Wikipedia:Expect是Unix系统中用来进行自动化控制和测试的软件工具,由Don Libes制作,作为Tcl脚本语言的一个扩展,应用在交互式软件中如telnet,ftp,Passwd,fsck,rlogin,tip,ssh等等。该工具利用Unix伪终端包装其子进程,允许任意程序通过终端接入进行自动化控制;也可利用Tk工具,将交互程序包装在X11的图形用户界面中。

示例

文件以.sh结尾

#!/usr/bin/expect

set timeout 5
# 跳板机
spawn ssh [your name]@[server_ip]
expect "*password*"
send "[pwd]\r"

expect "xxxi@jumpserver*"
send "ssh dp@172.1.1.1\r"
expect "*password*"
send "[pwd]\r"

interact

安装

首先查看当前的类Unix环境中是否已经支持expect,可以使用ls -l /usr/bin/expectls -l /bin/expect中是否存在,如果不支持的话下面提供两个环境的安装方法

  • MacOS brew install expect
  • Linux sudo yum install expectsudo apt install expect

说明

下面是对我们来说常用的命令,用了这几个也就能应付80%的使用场景了,相当简单

set

类似于定义常量,给变量赋值,如上面的set timeout 5,设置超时时间为5秒

spawn

执行shell命令,expect特有

expect

等待当前回话出现的条件if,可以直接匹配正则,比如我希望等出现某个字符串后再执行某些命令,就是使用expect,e.g.expect "*password*" 匹配提示中的关键词password

send

向终端会话中输入指定数据,我们常用的是密码等,如send "123123\r",记得其中的'\r',相当于我们输入完密码按的那个回车键,必不可少的

interact

脚本的结束标志语

小结

使用expect+alias能方便我们快速的登录各个终端服务器,哪怕跳板机再跳跳板机也能采用这几个命令简单实现。

201901读书汇

废了废了!入职新公司,完全是没时间看的节奏。期待开年能继续吧 《万物简史》 状态:ing 个人评价: 大约46亿年之前,一股直径约为240亿公里、由气体和尘埃组成的巨大涡流,积储在我们现在所在的空间,并开始聚集。-》太阳系里几乎全部物质--99.9%的物质都被用来形成了太阳-》剩下漂浮物经过不到2亿年相互碰撞形成地球-》约44亿年以前,一个火星大小物体碰撞地球撞出一个月球-》地球开始分化出大气层,因二氧化碳的出现产生了温室效应-》生命以某种方式出现 17、18世纪科学家都是怪异的,围绕地球所做的各种测量计算,为人类进步作出的贡献不容小觑。 《我胆小如鼠》 状态:finished 个人评价: 我胆小如鼠-杨高真的胆小吗?我看未必。他提着菜刀去砍吕前进时已说明了他的勇气,平时表现的不敢游泳或不敢爬树等都是事出有因。我在想,平时我们常常以自己的视角去评判一个人似乎过于片面,每个人都有自己的性格,有的谨慎,有的火爆,有的直率...再次想到一个词,因材施教,再贴切不过了。

2018年个人总结

简述 年度总结,不单单是一个形式,它更多的是让我们产生更多的回忆和思考吧。 2018已过去,2019也无法阻拦的到了,是时候提笔来写一写这一年中所经历的事了。 工作 一年内换两份工作,算是比较大的变动了。5月份从咕咚离职,应朋友邀请进入G7。其实说实话,我是挺舍不得咕咚的,氛围、环境、工作节奏、同事这些都好,但确实是因为一些实际的问题,出现了比较严重的倒挂现象,那就闪了吧。进入G7,开始进入金融领域,接触新的同事,新的开发框架,呵,这跳槽成本还是蛮大的,大家慎重吧。我本乐忠G7,奈何2018年金融风暴来袭,周边好些前同事不幸“遇难”,当然,G7金融部门也不见得能躲过。行吧,那我就主动换一个吧,进入成都新希望金融科技,当前已差不多和平度过一个月,希望后续能好好当一颗小灯泡吧,能为公司创造价值,实现自己价值。 这一年在未来技术上也想了很多,在咕咚一直在做业务,随着年龄的增长发现这个似乎不能成为我的一个核心竞争力了。从进入G7开始尝试慢慢往深层次方向走,改变方向也注定这条路不是那么好走的,需要耗费更多的时间和精力在这上面吧,感觉自己就跟一个小白一样。 生活 今年一过,