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即为定义变量,后面可以直接用该变量名

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页