expect

1、expect介绍

expect是由Don Libes基于Tcl语言开发的,主要应用于自动化交互操作的场景,借助Expect处理交互的命令,可以将交互过程如:ssh登录,ftp登录等写载一个脚本上,使之自动化完成。尤其适用于需要对多台服务器执行相同操作的环境中,可以大大提高系统管理人员的工作效率。

2、expect命令
格式:

expect [ -dDinN ] [ -c cmds ] [ [ -[f|b] ] cmdfile ] [ args ] 
-c:从命令行执行expect脚本,默认expect是交互执行。
-d:可以输出调试信息。

expect中相关命令

spawn:启动新的进程
send:用于向进程发送字符串
expect:从进程接受字符串
interact:允许用户交互
exp_continue:匹配多个字符串在执行动作后加此命令

3、expect常用语法
单一分支模式语法:

expect "hi" {send "you said hi\n"}

多分子模式语法

expect "hello" {send "you said hello\n"}\"hehe"{send "you said hehe"\n}

等同于

expect {
"hello" {send "you said hello\n"}
"hehe" {send "you said hehe\n"}
}

4、如何使用变量?
set NAME VARLUE
示例:

#!/bin/expect
#
set ip 192.168.0.1
set user root
set passwd 123456 
spawn ssh $user@$ip
expect {
    "yes/no" { send "yes\n" ; exp_continue }
    "password" { send "$passwd\n" }
}
interact

5、位置参数
set NAME [lindex $argv #]
示例:

#!/bin/expect
#
set ip [lindex $argv 0]
set user [lindex $argv 1]
set password [lindex $argv 2]
spawn ssh $user@$ip
expect {
    "yes/no" { send "yes\n";exp_continue }
    "password" { send "$password\n" }
}
interact

6、如何在shell脚本中调用expect

#!/bin/bash
#
ip=$1
user=$2
password=$3
expect <<eof
set timeout 10
spawn ssh $user@$ip
expect {
    "yes/no" { send "yes\n";exp_continue }
    "password" { send "$password\n" }
}
expect eof
eof

注意:如果没有加选项interact,则expect eof 这个一定要加,与spawn对应表示捕获终端输出信息终止,类似于if….endif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值