expect交互脚本用法

expect的常用命令

命 令说 明
spawn启动新的交互进程, 后面跟命令或者指定程序
expect从进程中接收信息, 如果匹配成功, 就执行expect后的动作
send向进程发送字符串
send exp_send用于发送指定的字符串信息
exp_continue在expect中多次匹配就需要用到
send_user用来打印输出 相当于shell中的echo
interact允许用户交互
exit退出expect脚本
eofexpect执行结束, 退出
set定义变量
puts输出变量
set timeout设置超时时间

 

脚本实例

该脚本主要用于登录交互(expectLogin.sh)

#!/usr/bin/expect
 set timeout 5
 set server [lindex $argv 0]
 set user [lindex $argv 1]
 set passwd [lindex $argv 2]
 spawn ssh -l $user $server
 expect {
     "(yes/no)" { send "yes\r"; exp_continue }
     "password:" { send "$passwd\r" }
  }
 expect "*Last login*" interact

添加执行权限后可以直接使用:./expectLogin.sh 172.16.6.100 root 123456

 

通过shell调用expect执行多条命令

通过shell调用expect进行交互,其中还用到了read命令来获取屏幕输入 

#!/bin/bash
 ​
 ip="172.16.6.100"
 username="root"
 read -p "请输入$username用户的密码:" password
 ​
 # 指定执行引擎
 /usr/bin/expect <<EOF
     set time 30
     spawn ssh $username@$ip df -Th
     expect {
         "*yes/no" { send "yes\r"; exp_continue }
         "*password:" { send "$password\r" }
     }
     expect eof
 EOF

read命令后的password即为定义变量,后面可以直接用该变量名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值