最近在弄ansible的时候,每次使用的时候都要输入密码感觉非常的麻烦,起初是一台一台做无密码验证,但是效率太低。了解到linux是可以批量做部署的,但是需要使用expect脚本来完成。

expect脚本需要linux安装expect程序才能被支持

[root@DECMDB01 ~]# yum -y install expect

在执行的时候需要通过expect命令执行:

[root@DECMDB01 ~]# expect batch_file.exp

先看一组例子:

正常远程登陆Linux服务器:

[root@130 ~]# ssh root@192.168.222.131
The authenticity of host '192.168.222.131 (192.168.222.131)' can't be established.
RSA key fingerprint is e4:69:83:2f:74:75:56:70:87:a6:4f:b1:8d:2e:01:8f.
Are you sure you want to continue connecting (yes/no)? ^C    ##在不使用expect脚本我们需要手动输入yes/no
[root@130 ~]#

通过expect登陆Linux服务器:

[root@130 ~]# expect auto_yes.exp             ##通过expect自动化脚本执行登陆
spawn ssh root@192.168.222.131
The authenticity of host '192.168.222.131 (192.168.222.131)' can't be established.
RSA key fingerprint is e4:69:83:2f:74:75:56:70:87:a6:4f:b1:8d:2e:01:8f.
Are you sure you want to continue connecting (yes/no)? yes    ##这里的yes是脚本自动补全
Warning: Permanently added '192.168.222.131' (RSA) to the list of known hosts.
root@192.168.222.131's password:      ##密码自动填充
Last login: Fri Nov  3 03:19:31 2017 from 192.168.222.1
[root@131 ~]#              ##这里已经成功ssh到192.168.222.131

比较差异:

expect脚本避免了手动输入yes或no,如果在未来工作中,有这种交互动作非常频繁,而且响应结果一致的话,那么显然expect是个不错的选择。

=============================================================

我们画个分割线看看脚本是怎么写的

#!/bin/expect            ##指定脚本解释器
spawn ssh root@192.168.222.131        ##执行命令
expect {"yes/no"        {send "yes\r";exp_continue}        ##匹配到yes/no就自动输入yes,继续往下匹配"*password"     {send "root\r"}                ##匹配到password,则自动输入root
}
expect eof    ##结束

转载于:https://blog.51cto.com/swiki/1978487

expect自动化交互脚本(一)相关推荐

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

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

  2. pexpect oracle,expect免交互脚本编程

    一.大纲 1.Expect概述 2.Expect安装(底层语言Tcl) 3.Expect基本命令 4.Expect执行方式 5.Expect案例 一.Expect概述 1.Expect是建立在tcl语 ...

  3. Here Document免交互和Expect自动化交互

    目录 一.免交互 1.Here Document 免交互定义 2.语法格式 3.注意事项 (1)免交互方式实现对行数的统计,将要统计的内容置于标记"EOF"之间,直接将内容传给 w ...

  4. 以某一用户名和密码 登录请求脚本_linux expect自动交互脚本

    1.expect参数 2.启用选项 -c :执行脚本前先执行的命令,可多次使用.-d :debug模式,可以在运行时输出一些诊断信息,与在脚本开始处使用 exp_internal 1 相似.-D :启 ...

  5. Ubuntu16.04利用expect模拟键盘输入实现自动化交互

    在Linux的日常使用中,经常会有自动化交互的需要,如SSH,手动的操作繁琐.效率地下,使用expect工具可以模拟键盘输入,实现自动输入.自动交互. 1,安装  sudo apt install e ...

  6. linux 自动化交互套件 expect 介绍 shell非交互

    expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信. expect自动交互流程: spawn启动指定进程---expect获取指定关键字--- ...

  7. 【拔刀吧少年】之Expect 自动化控制和测试 Here Document 免交互

    免交互 一.Here Document免交互 1.1 概述 1.2 语法格式 1.3 简单案例 1.4 支持变量替换 1.5 多行注释 1.6 完成自动划分磁盘免交互 二.Expect进行免交互 2. ...

  8. 为什么脚本执行一行就不动了_在Linux中通过expect工具实现脚本的自动交互

    expect是建立在tcl基础上的一个自动化交互套件, 在一些需要交互输入指令的场景下, 可通过脚本设置自动进行交互通信. 1 安装expect工具 expect是建立在tcl基础上的一个自动化交互套 ...

  9. linux ssh非交互脚本,Linux expect非交互式执行脚本

    expect简介 expect是一款自动化的脚本解释型的工具. expect基于tcl脚本,expect脚本的运行需要tcl的支持. expect对一些需要交互输入的命令很有帮助,比如ssh ftp ...

最新文章

  1. Linux指定网卡优先级,如何在Ubuntu中设置网络连接的优先级?
  2. JAVA传递子类参数,在Java中,是否可以通过传递超类方法中使用的参数的子类来覆盖方法?...
  3. [转贴]制作windows 2003自动安装盘-集成补丁/Raid及硬件驱动
  4. centOS 6环境下安装R-3.3.2及Rstudio-server
  5. java beanutil 工具类_实现BeanFactoryAware来达到Spring静态方法获取Bean对象的BeanUtil工具类...
  6. galaxy s8 android pc,手机秒变PC!三星Galaxy S8桌面模式曝光
  7. fopen文件路径怎么写_PHP文件上传
  8. iphone短信尚未送达_iPhone开启这个功能,从此告别垃圾短信骚扰!
  9. linux系统ftp优化,Linux vsftp 部署优化
  10. Android运行时权限,设置帮助类BaseActivity;电话权限,短信权限,
  11. java jdbc 参数_java_jdbc_可变参数_MetaData
  12. 调试工具BTrace 的使用--例子
  13. sqlserver备份还原丢失dbo_sqlserver数据库的备份与恢复sql实现
  14. bulk insert java_从JAVA插入SQL Server时,我可以获得“BULK INSERT”般的速度吗?
  15. Jlink接口引脚定义
  16. java调用讯飞语音合成api
  17. swagger设置字段required必填
  18. springboot+Vue整合Luckysheet,实现在线编辑Excel表格
  19. 怎么用ai做出适量插画_8个步骤,快速绘制矢量插画
  20. 线下门店如何运营私域流量

热门文章

  1. gradle idea java ssm_应用框架:IDEA+Gradle创建MyBatis+SpringMVC项目
  2. java实例变量成员变量_Java的类成员变量、实例变量、类变量,成员方法、实例方法、类方法...
  3. 命名空间不能直接包含_C++程序中可以命名的5种元素
  4. 2018面向对象程序设计(Java)第3周学习指导及要求
  5. vue 使用element 菜单与tab页联动
  6. 【ubuntu】安装之后要安装的一些东西
  7. linux之创建临时文件的方法
  8. Docker 私有仓库 Harbor registry 安全认证搭建 [Https]
  9. 如何读取抓取的wifi包内容
  10. 苹果树的故事(转发的)