expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。

expect自动交互流程:

spawn启动指定进程---expect获取指定关键字---send向指定程序发送指定字符---执行完成退出.

expect常用命令总结:

spawn               交互程序开始后面跟命令或者指定程序
expect              获取匹配信息匹配成功则执行expect后面的程序动作
send exp_send       用于发送指定的字符串信息
exp_continue        在expect中多次匹配就需要用到
send_user           用来打印输出 相当于shell中的echo
exit                退出expect脚本
eof                 expect执行结束 退出
set                 定义变量
puts                输出变量
set timeout         设置超时时间

示例:

1.ssh登录远程主机执行命令,执行方法 expect 1.sh 或者 ./1.sh

# vim 1.sh #!/usr/bin/expectspawn ssh saneri@192.168.56.103 df -Th
expect "*password"
send "123456\n"
expect eof

2. ssh远程登录主机执行命令,在shell脚本中执行expect命令,执行方法sh 2.sh、bash 2.sh 或./2.sh都可以执行.

#!/bin/bashpasswd='123456'/usr/bin/expect <<-EOFset time 30
spawn ssh saneri@192.168.56.103 df -Th
expect {
"*yes/no" { send "yes\r"; exp_continue }
"*password:" { send "$passwd\r" }
}
expect eof
EOF

3.expect执行多条命令

#!/usr/bin/expect -fset timeout 10spawn sudo su - root
expect "*password*"
send "123456\r"
expect "#*"
send "ls\r"
expect "#*"
send "df -Th\r"
send "exit\r"
expect eof

4. 创建ssh key,将id_rsa和id_rsa.pub文件分发到各台主机上面。

1.创建主机配置文件[root@localhost script]# cat host
192.168.1.10 root 123456
192.168.1.20 root 123456
192.168.1.30 root 123456[root@localhost script]# ls
copykey.sh  hosts
2.编写copykey.sh脚本,自动生成密钥并分发key.
[root@localhost script]# vim copykey.sh#!/bin/bash# 判断id_rsa密钥文件是否存在
if [ ! -f ~/.ssh/id_rsa ];thenssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
elseecho "id_rsa has created ..."
fi#分发到各个节点,这里分发到host文件中的主机中.
while read linedouser=`echo $line | cut -d " " -f 2`ip=`echo $line | cut -d " " -f 1`passwd=`echo $line | cut -d " " -f 3`expect <<EOFset timeout 10spawn ssh-copy-id $user@$ipexpect {"yes/no" { send "yes\n";exp_continue }"password" { send "$passwd\n" }}expect "password" { send "$passwd\n" }
EOFdone <  hosts

5. 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 "]#" { send "useradd hehe\n" } expect "]#" { send "touch /tmp/test.txt\n" } expect "]#" { send "exit\n" } expect eof EOF  #./ssh5.sh 192.168.1.10 root 123456 

linux 自动化交互套件 expect 介绍 shell非交互相关推荐

  1. 使用expect实现shell自动交互

    shell脚本需要交互的地方可以使用here文档是实现,但是有些命令却需要用户手动去就交互如passwd.scp 对自动部署免去用户交互很痛苦,expect能很好的解决这类问题. expect的核心是 ...

  2. expect返回值给shell_使用expect实现shell自动交互

    shell脚本需要交互的地方可以使用here文档是实现,但是有些命令却需要用户手动去就交互如passwd.scp 对自动部署免去用户交互很痛苦,expect能很好的解决这类问题. expect的核心是 ...

  3. linux ssh非交互脚本,sshpass-Linux命令之非交互SSH

    sshpass:用于非交互的ssh 密码验证,允许你用 -p 参数指定明文密码,然后直接登录远程服务器. 它支持密码从命令行,文件,环境变量中读取. Ubuntu/debian系列的linux系统安装 ...

  4. linux 脚本 expected,使用expect实现shell中scp自动输入密码

    使用expect实现shell中scp自动输入密码 前段时间有一个需求,要实现一个自动备份脚本,因为不需要全部备份,所以没有使用rsync,在这里使用scp.因为scp需要输入用户密码,在网上查了好多 ...

  5. linux mq脚本,Linux自动化命令工具expect

    expect是Unix系统中用来进行自动化控制和测试的软件工具,应用在交互式软件中如telnet,ftp,Passwd,fsck,rlogin,tip,ssh等等. 用法 Linux中我们经常写脚本处 ...

  6. 大型项目linux自动化版本发布脚本(shell)之tomcat、nginx服务脚本

    2019独角兽企业重金招聘Python工程师标准>>> 最近,又临近博主所负责的一个大型项目的发版了.之前有提到过,该项目涉及到50-60台服务器的发版.且项目客户规定发版需在晚上1 ...

  7. Schnorr协议:非交互零知识身份证明和数字签名

    本文首发公众号区块链之美!致力于区块链技术研究,传播区块链技术和解决方案.区块链应用落地.区块链行业动态等. 摘要:本篇文章介绍Schnorr的两大应用场景:从交互式零知识身份证明到非交互零知识身份证 ...

  8. html5的交互式微课,一种交互式微课的控制方法及交互式微课与流程

    技术特征: 1.一种交互式微课的制作方法,其特征在于,包括以下步骤: 获取预设版面: 在所述预设版面中插入至少一个交互对象: 获取音频流: 根据所述音频流确定时间轴,所述时间轴包括至少一个交互点,所述 ...

  9. shell脚本详解(十二)——Here Document免交互及Expect自动化交互

    shell脚本详解(十二)--Here Document免交互及Expect自动化交互 一.Here Document 免交互 1.格式 2.注意事项 3.免交互方式实现对行数的统计,将要统计的内容置 ...

最新文章

  1. 多尺度注意力机制的语义分割
  2. 电脑内存和磁盘空间有什么区别与联系
  3. 用GDI+转BMP为WMF、EXIF、EMF格式
  4. 学会查看 RabbitMQ日志
  5. 程序员幽默:一整天都在修复 bug 是啥感觉?
  6. Leetcode每日一题:28.implement-strstr(实现strStr())
  7. LeetCode:Restore IP Addresses
  8. Weakness and Poorness
  9. mysql 计算天数去除第二和第四个周日_123走起,MySQL每秒57万的写入
  10. 将pycharm汉化
  11. EML-NET: An Expandable Multi-Layer NETwork for Saliency Prediction【论文笔记】
  12. html阅读caj文件格式,caj文件怎么打开,caj转换成word(解决方案)
  13. QT中的sender函数,result函数
  14. php 解析mpp 格式文件
  15. 网络摄像头无插件直播H265编码视频播放器EasyPlayer网页播放器不能播放怎么处理?
  16. 厉害!23岁本科生发14篇SCI论文,并任外审专家……
  17. 转:安迪·格鲁夫:你无法避免开会,但可以让它更有效率
  18. 我成功转型大厂数据分析师后,总结了这些经验…
  19. 05-阿里云视频点播服务与谷粒学院整合视频点播技术
  20. [转]Mysql在大型网站的应用架构演变

热门文章

  1. Kubernetes — Helm 软件包管理工具
  2. C 语言编程 — 基本数据类型
  3. GD32的flash读、擦除、写操作
  4. codeblocks安装后提示找不到编译器,也找不到MinGW目录
  5. SSPL的MongoDB再被抛弃,GUN Health也合流PostgreSQL
  6. 【转】LINUX 手动建立SWAP文件及删除
  7. 微软职位内部推荐-Software Engineer II-Office Incubation
  8. Hadoop大数据零基础高端实战培训系列配文本挖掘项目
  9. [Android]关于Root
  10. 怎样才能在一般处理文件中创建新的Session和访问已经存在的Session?