expect实现自动登录脚本
Posted leeon_l
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了expect实现自动登录脚本相关的知识,希望对你有一定的参考价值。
写在前面:目前在公司是一人一台虚拟机,大多数工作都要在虚拟机上完成,为此每天要执行很多次【ssh xxx@xxxxxx】指令登录虚拟机;有很多方式解决这个问题,如使用xshell、secureCRT等工具记录常用的连接,我就写了一个简单的脚本实现一键登录~
login.sh脚本内容如下:
#!/usr/bin/expect
spawn ssh xxx@xxxxxx
expect "*password:"
send "密码\\r"
interact
再将【./login.sh】配置别名alias,或移动到可执行目录中,即可实现【login】一键登录;
expect是一个处理交互的指令,通过expect我们可以把交互过程写到Shell脚本里以实现一些自动化操作~
expect有四个核心的指令:
- spawn:启动新进程,后跟新进程要执行的指令;
- expect:指定要监听的字符串,如果spawn进程返回了匹配的字符串(如标准输入的提示信息),则触发send;
- send:发送指定的字符串到spawn进程,代替标准输入;
- interact:用户参与交互;
对于login.sh的执行过程为:
【spawn】启动一个新进程执行ssh登录指令,【expect】监听到标准输入的提示信息『xxx@xxxxxx’s password』符合匹配规则,触发【send】发送密码代替手动输入,完成登录,【interact】用户参与交互,此时已登录上了虚拟机;
使用expect还可以完成如:批量更新git代码库、自动登录FTP等功能等~
博客搬家:https://segmentfault.com/blog/leeonfancy
以上是关于expect实现自动登录脚本的主要内容,如果未能解决你的问题,请参考以下文章
分发系统介绍,expect脚本远程登录,expect脚本远程执行命令,expect脚本传递参数