linux之expect命令

介绍

expect 是一个用来处理 交互 的命令。
借助expect,可以将 交互过程 写在一个脚本上,使之自动化完成。

比如:ssh自动登录,ftp自动登录 等都符合交互的定义,可以通过 expect 脚本实现

支持操作系统:linux、unix、mac

安装

一般unix、linux、mac会自带

linux

确认是否安装

rpm -qa | grep expect

查看安装路径

which expect

关键4个命令

expect中最关键的四个命令是:send,expect,spawn,interact。

spawn:启动新的进程
expect:从进程接收字符串
send:用于向进程发送字符串
interact:允许用户交互

以ssh自动登录为例进行讲解

set timeout 30

设置超时时间,单位:秒。暂时用不到

例子:

#!/usr/bin/expect -f
set timeout 30

注意:
第一行表示 expect 脚本

spawn

启动新的进程

例子:

#!/usr/bin/expect -f
set timeout 30
spawn ssh root@127.0.0.1

执行 ssh 命令,以root用户登录ip是127.0.0.1的服务器

expect

从进程接收字符串

例子:

#!/usr/bin/expect -f
set timeout 30
spawn ssh root@127.0.0.1
expect "password:"

判断接收字符串是否包含password:,如果有则立即返回,否则就等待一段时间后返回
这里等待时长就是前面set timeout 30设置的超时时间

send

用于向进程发送字符串(就是执行 交互 动作)

例子:

#!/usr/bin/expect -f
set timeout 30
spawn ssh root@127.0.0.1 
expect "password:"
send "abcd1234\r"

相当于手动输入密码。

注意: 结尾必须加上\r,表示回车

interact

允许用户交互,此时用户可以在控制台执行其他操作。
如果没有此命令,登录完成后会退出,而不是留在控制台上。

感谢:
https://www.cnblogs.com/lzrabbit/p/4298794.html
https://www.cnblogs.com/iloveyoucc/archive/2012/05/11/2496433.html


原文出处:/show_1EF59dgIUQZK.html