MAC下使用expect先登录跳板机再登录远程服务器

mac使用ssh远程连接服务器没有保存密码的功能,后来使用脚本写了一个读取密码然后自动登录的功能,用着挺好。但是最近公司为了安全起见,不再让直接连接测试服务器,必须先登录跳板机,再通过跳板机登录测试服务器.....每次要输两次密码,好麻烦的说。
为了不这么麻烦,在网上搜了一下如何使用脚本直接登录,结果如下:

//首先MAC要安装expect( brew install expect),然后,编写下面的脚本文件保存
#!/usr/bin/expect -f
#设置超时时间
set timeout 3
#这里设置了跳板机的密码
set password "你的跳板机密码"
#连接跳板机
spawn ssh 用户名@跳板机IP

#如果返回的内容包含*yes/no*,发送yes
expect "*yes/no*" {send "yes\n"}
#如果返回的内容包含"*password*",发送你设置的密码+\r(PS.这里的\r一定要加,是回车操作的意思。。。在网上搜了好多没有说明,一直以为是换行,没有加这个,结果一直执行不成功)
expect "*password:*" {send "$password\r;"}
#登录跳板机成功,如果返回的内容包含"*你的跳板机的名称*",发送连接测试机的命令
expect "*能匹配跳板机名称的字符串*" {send "ssh 测试服务器的用户名@测试服务的IP\r";}
#同上面一样。。。注意interact是留在测试机上,给用户控制权限,如果不写会直接退出
expect "*password:*" {send "你的密码\r";interact}
#保存为 login.sh 执行 expect login.sh
#终于不用手输两次密码了.....

这里只简单写一下,具体expect是什么东东,大家自行百度谷歌了解吧--

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,080评论 19 139
  • 请不要转载 背景介绍 Expect 程序主要用于人机对话的模拟,就是那种系统提问,人来回答 yes/no ,或者账...
    羽风之歌阅读 53,689评论 12 46
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,885评论 25 709
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,664评论 9 468
  • 最近,一直在和朋友聊过去的那些事,嗯,确实很深入人心,每次说起来都能说好久好久。 那些年,我们上初中,我们都很小,...
    粗糙与温柔的狗子阅读 162评论 0 1