首页
运维教程
Linux基础
系统服务
系统架构
数据库
shell脚本
虚拟化
大数据
DevOps
企业案例
运维开发
python
go语言
运维安全
行业资讯
网络基础
系统安全
运维面试
学习路线
学习方法
面试题库
职场解惑
软件
运维软件
办公软件
书籍资源
技术陪跑营
重要信息
首页 运维教程shell脚本expect的使用方法

expect的使用方法

expect

功能:

  • 在脚本中自动捕获一些信息人,然后自动输入内容

安装

  • yum install expect -y

关键字

  • spawn:执行一个命令
  • expect:设置等待出现的字符
  • send:发现等待的字符之后,执行的动作

例子:执行ssh 192.168.31.64 ip addr 命令,执行过程中出现 (yes/no)字符发送yes

写法1
spawn  ssh 192.168.31.64 ip addr
expect   "(yes/no)"  {send "yes\r"}

写法2
spawn  ssh 192.168.31.64 ip addr
expect   "(yes/no)"  
send "yes\r"

案例:编写expect脚本,实现获取远程主机的IP地址

#!/usr/bin/expect

set timeout 10
spawn ssh 192.168.31.64 ip addr
expect "(yes/no)" {send "yes\r"}
expect "password:" {send "123456\r"}
expect eof

符号

  • \r:回车
  • \n:换行

定义变量

  • sent 变量名 变量值

引用变量

  • puts $变量名

shell和expect结合有两种方式

  • 在shell脚本中写expect代码
  • 在shell脚本中调用expect脚本

在shell脚本中写expect代码

#!/bin/bash

ip=192.168.31.64

/usr/bin/expect<<eof
     spawn scp /etc/passwd root@$ip:/tmp
     set timeout 10
     expect {
          "(yes/no)" {send "yes\r"; exp_continue}
          "password:" {send "123456\r"}
     }
     expect eof
     exit
eof

echo "send file complate"

在shell脚本中调用expect脚本

expect脚本内容

#!/usr/bin/expect

set timeout 10
set ip 192.168.31.64
spawn scp /etc/passwd root@$ip:/tmp
expect "(yes/no)" {send "yes\r"}
expect "password:" {send "123456\r"}
expect eof
exit

shell脚本内容

#!/bin/bash

echo "start "
expect 1.exp
echo "complate"

欢迎关注:
wwww.geekyunwei.com 极客运维

本文链接:http://www.geekyunwei.com/1640.html

网友评论comments

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

暂无评论

Copyright © 2021 极客运维 公众号《极客运维之家》
扫二维码
扫二维码
返回顶部