expect是一个用来处理交互的命令。借助于expect我们可以把交互过程写在一个脚本上,使之自动化完成。

expect最核心的四个命令:

send:用于向进程发送字符串
except:从进程接收字符串
spawn:打开一个新的进程
interact:保持交互的状态

首先一个简单的脚本:

#!/usr/bin/expect            #定义解释器和shell一样
set user [lindex $argv 0]    #定义变量
set host [lindex $argv 1]    #
set passwd "8023jun12"
spawn ssh $user@$host         #打开一个ssh进程
expect "password:"            #捕捉到“password:"字符串时,调用send发送字符串
send "$passwd\r"
interact                     #ssh登录后保持登录状态,若没有此语句脚本执行完之后就会返回

执行脚本:

[root@slave expect]# ./1.sh root 192.168.1.120
spawn ssh root@192.168.1.120
root@192.168.1.120's password:
Last login: Tue Dec 27 07:27:07 2016 from slave
[root@master ~]#

可以设置超时时间:

set timeout 100:设置超时时间为100秒,如果要执行的shell命令很长可以设置超时时间长一些。expect超过超时时间没有监测到要找的字符串,则不执行,默认timeout为10秒

expect的命令行参数

[lindex $argv n]获得index为n的参数(index从0开始计算)
$argc为命令行参数的个数
[lrange $argv 0 0]表示第一个参数
[lrange $argv 0 3]表示第1到第3个参数

转载于:https://blog.51cto.com/zidingyi/1887482

expect脚本的简单应用相关推荐

  1. expect脚本教程_Expect脚本SSH示例教程

    expect脚本教程 Expect script is a great linux/unix utility. I have to deal with a lot of unix servers in ...

  2. Linux下shell自动输入密码,shell脚本通过expect脚本实现自动输入密码

    背景:在远程文件下载时,需要输入对方的服务器密码,shell不支持交互输入内容,可以用下面两种方式实现 一.在shell脚本中嵌入expect来实现密码输入 expect是一个自动交互功能的工具.ex ...

  3. expect脚本中使用普通用户执行sh脚本命令,expect脚本中解决``反引号获取值有问题方法、expect遍历登录不同主机不同密码的主机执行指定命令方法

    文章目录 说明 代码 脚本内容 存放ip和其密码 执行脚本 测试[必做] 批量跑脚本 后台验证 说明 今天有一个脚本需求[目前有400台虚拟机,手动登录肯定不现实的],5期所有虚拟机都需要验证是否已经 ...

  4. Expect的安装与应用,及实现自动检测另外一台服务器运行状态并重启,和使用expect脚本远程批量管理服务器与日志分析

    学习Expect Expect是什么? Expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预.  Expect是不断发展的,随着时间的流逝,其功能越来越强大,已经成为 ...

  5. ssh其他机器的Expect脚本

    ssh登陆其他机器的Expect脚本 #!/usr/bin/expect -fset user [lindex $argv 0] set ipaddr [lindex $argv 1] set pas ...

  6. expect脚本同步文件、 expect脚本指定host和要同步的文件 、 构建文件分发系统 、批量远程执行命令...

    为什么80%的码农都做不了架构师?>>>    20.31 expect脚本同步文件 使用expect脚本同步文件 说明:核心命令是rsync #! /usr/bin/expect ...

  7. Expect自动化控制简单介绍

    telnet,ftp,Passwd,fsck,rlogin,tip,ssh等等.该工具利用Unix伪终端包装其子进程,允许任意程序通过终端接入进行自动化控制:也可利用Tk工具,将交互程序包装在X11的 ...

  8. python的简单编程-python入门脚本的简单示例

    编程之家收集整理的这篇文章主要介绍了python入门脚本的简单示例,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考. 感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编来看看吧. ...

  9. 小型自动化运维--expect脚本之自动同步

    小型自动化运维--expect脚本之自动同步 expect脚本可以运用于自动化运维多个方面,例如:可以自动到远程机器执行命令,也可以传输文件到远程机器上. 脚本如下: #!/usr/bin/expec ...

最新文章

  1. SVO学习笔记(二)
  2. Android Priority Job Queue (Job Manager):多重不同Job并发执行并在前台获得返回结果(四)...
  3. 关于Unity中从服务器下载资源压缩包AssetBundle的步骤
  4. python一般用什么编译器-Python常用编译器原理及特点解析
  5. excel 某个单元格不是等于空值_这些稀奇古怪的符号,却是Excel高手们常玩的!...
  6. video和dvd audio区别:
  7. linux work queue
  8. swift3.0 类字符串转类(字符串转ViewController)
  9. 【Java】javaWeb中的三大组件与八大监听器
  10. linux 查看cuda版本_Ubuntu18.04+Tensorflow GPU版本环境搭建
  11. SpringBoot+Vue.js实现大文件分片上传、断点续传与极速秒传
  12. 关于企业费控管理的这些陷阱,你知道吗?
  13. ARM交叉编译工具链安装和使用教程【图文并茂】
  14. Scrum板与Kanban如何抉择?敏捷工具:SHSYdsjgyadtgad
  15. 20221115使用google文档翻译SRT格式的字幕
  16. Photoshop CS6 序列号完美激活教程
  17. Java web实时进度条整个系统共用(如java上传、下载进度条、导入、导出excel进度条等)...
  18. RFID信息系统数据安全对策分析
  19. unity应用商店脱机怎么解决有vpn(新手小白感谢大佬)
  20. nuget找不到System.Windows.Forms时用程序包管理器控制台直接下载

热门文章

  1. 第一次失效_神兵小将:净化之力失效地魔兵兽,全靠特殊办法,铁心方式真霸气...
  2. maven 关联源码插件_繁琐的任务简单化,Maven的插件机制
  3. tablueau地图标记圆形_30天30张中国风地图,从青绿山水到秦砖汉瓦
  4. Linux 下修改(NTFS或fuseblk)磁盘(卷标)显示名称
  5. iOS中的多线程一般使用场景
  6. UVA572 Oil Deposits DFS求解
  7. 百炼OJ - 1004 - 财务管理
  8. day9-Python学习笔记(二十)数据库备份,修改父类的方法
  9. Java Inner Class 内部类
  10. 状态管理工具vuex的基本使用(vuebus的理解)