expect脚本
1. expect简介
expect是一个用来处理交互的命令。借助Expect,我们可以将交互过程写在一个脚本上,使之自动化完成。
expect(自动应答) 基于TCL(Tool Command Language)语言演变而来 expect中最关键的四个命令是:
send:用于向进程发送字符串
expect:从进程接收字符串
spawn:启动新的进程
interact:允许用户交互 2. 安装expect
# yum install expect -y 查看expect信息
[root@web1 sed]# rpm -qi expect
Name : expect Relocations: (not relocatable)
Version : 5.44.1.15 Vendor: CentOS
Release : 5.el6_4 Build Date: Mon 04 Nov 2013 05:05:44 PM CST
Install Date: Sun 21 Aug 2016 11:48:49 PM CST Build Host: c6b9.bsys.dev.centos.org
Group : Development/Languages Source RPM: expect-5.44.1.15-5.el6_4.src.rpm
Size : 566637 License: Public Domain
Signature : RSA/SHA1, Mon 04 Nov 2013 07:53:54 PM CST, Key ID 0946fca2c105b9de
Packager : CentOS BuildSystem <http://bugs.centos.org>
URL : http://expect.nist.gov/
Summary : A program-script interaction and testing utility
Description :
Expect is a tcl application for automating and testing
interactive applications such as telnet, ftp, passwd, fsck,
rlogin, tip, etc. Expect makes it easy for a script to
control another program and interact with it. This package contains expect and some scripts that use it. 任何有交互性的操作,都可以用expect来做 3. expect使用详解
#!/bin/bash expect <<EOF > /dev/null 2>&1 --/dev/null 代表把标准输出重定向输出到空洞,2>&1代表把出错输出也定向到标准输出。
spawn passwd $1 --产生passwd $1这个命令
expect "password:" --当停在rd:结尾这个标识符时
send "456\r" --我就把456传给它
expect "password:" --当再次停在rd:结尾这个标识符时
send "456\r" --我就再次把456传给它
expect eof --表示expect结束
EOF # sh 1.expect test --执行方法,因为脚本里写的是$1,所以后面接你要修改密码的用户名
远程ssh #!/bin/bash sed -i '/^'$1'/d' /root/.ssh/known_hosts
expect << EOF > /dev/null 2>&1
spawn ssh $1
expect "no)?"
send "yes\r"
expect "password:"
send "123456\r"
expect "]#"
send "mkdir /root/Desktop/aa\r"
send "touch /root/Desktop/aa/$1\n"
send "exit\n"
expect eof
EOF 假设管理的机器有N台,密码也各不相同(没有ssh等效性),现在需要在每个机器上都创建一个文件 # cat ip_user_passwd.txt --这个文件里包含你所有管理机器的IP,用户及其对应的密码
10.1.1.63 root oracle
10.1.1.77 root 1234
10.1.1.73 user1 123456
10.1.1.85 root 54321
...... # cat 6.expect
#!/bin/bash cat ip_user_passwd.txt |while read ip user password
do
sed -i '/^'$ip'/d' /root/.ssh/known_hosts
expect <<EOF &> /dev/null
spawn ssh $ip -l $user
expect ")?"
send "yes\r"
expect "rd:"
send "$password\n"
expect "]#"
send "touch /tmp/123\n" --这里可以修改你每次要在这些机器上做的命令
send "exit\n"
expect eof
EOF
done

  

expect自动应答的更多相关文章

  1. shell脚本--expect自动应答

    expect自动应答  TCL语言 需求1:远程登录到A主机,什么事情也不做 #! /usr/bin/env expect # 开启一个程序 spawn ssh root@192.144.213.11 ...

  2. SSH批量管理 expect自动交互

    SSH批量管理 expect自动交互 原创博文http://www.cnblogs.com/elvi/p/7662908.html # SSH批量管理 # expect自动交互 ########### ...

  3. DWM1000 自动应答代码实现与实例

    这一节继续继承之前帧过滤部分,首先补充一下关于帧过滤部分,如果将目标地址设置为0xFFFF,则同一个网络(物理频道与PANID 都相同),所有节点都应该收到这条信息,这个信息为广播信息,0xFFFF为 ...

  4. 解决expect自动登录,rz和sz不能使用问题

    一.问题描述: 解决expect自动登录,rz和sz不能使用问题: 二.解决方法: 1. 临时修改环境变量: 将本地的LC_CTYPE环境变量设置成en_US export LC_CTYPE=en_U ...

  5. Windows 7 SP1无人值守自动应答文件制作

    使用U盘安装Windows系统时,很多人都会使用UltraISO工具来制作U盘启动盘,然后插入到电脑中加以安装.系统的安装过程中,需要一步一步手动选择或者输入配置,Windows是支持无人值守自动应答 ...

  6. C#-MVC开发微信应用(5)--自动应答系统-自动回复机器人

    前几篇已经介绍菜单和有回复信息操作,下面我们就结合snf微信端管理页面,看一下什么才是自动应答系统. 定制的服务 对于微信服务号来说,最主要的功能是提供更好的服务.用户更方便的操作,以及更快的反馈响应 ...

  7. C# .net微信开发,开发认证,关注触发消息,自动应答,事件响应,自定义菜单

    成为开发者 string[] ArrTmp = { "token", Request["timestamp"], Request["nonce&quo ...

  8. centos shell编程4【分发系统】 服务器标准化 mkpasswd 生成密码的工具 expect讲解 expect传递参数 expect自动同步文件 expect指定host和要同步的文件 expect文件分发系统 expect自动发送密钥脚本 Linux脚本执行方式 第三十八节课

    centos shell编程4[分发系统] 服务器标准化  mkpasswd 生成密码的工具  expect讲解   expect传递参数   expect自动同步文件  expect指定host和要 ...

  9. (转)C# .net微信开发,开发认证,关注触发消息,自动应答,事件响应,自定义菜单

    原文地址:http://www.cnblogs.com/qidian10/p/3492751.html 成为开发者 string[] ArrTmp = { "token", Req ...

随机推荐

  1. 学习打卡——Linux下安装Redis

    http://download.redis.io/releases/,这是查看当前Redis可供下载的Linux系统版本 第一步:启动系统 启动Linux,我这里是CentOS 7 第二步:下载 打开 ...

  2. 超详细讲解H5移动端适配

    前言 移动互联网发展至今,各种移动设备应运而生,但它们的物理分辨率可以说是五花八门,一般情况UI会为我们提供375尺寸的设计稿,所以为了让H5页面能够在这些不同的设备上尽量表现的一致,前端工程师就不得 ...

  3. Python 报错 ValueError list.remove(x) x not in list 解决办法

    平时开发 Python 代码过程中,经常会遇到这个报错: ValueError: list.remove(x): x not in list 错误提示信息也很明确,就是移除的元素不在列表之中. 比如: ...

  4. python黑帽子(第三章)

    Windows/Linux下包的嗅探 根据os.name判断操作系统 下面是os的源码 posix是Linux nt是Windows 在windows中需要管理员权限.linux中需要root权限 因 ...

  5. Python 函数进阶-迭代器

    迭代器 什么是迭代器 能被 next 指针调用,并不断返回下一个值的对象,叫做迭代器.表示为Iterator,迭代器是一个对象类型数据. 概念 迭代器指的是迭代取值的工具,迭代是一个重复的过程,每次重 ...

  6. 关于BenchMark/c++11计时器/Chrome:tracing 的一些笔记

    A benchmark is a test of the performance of a computer system. ​ 基准测试是对计算机系统的性能的测试 计时器 性能的指标就是时间,在c+ ...

  7. 利用腾讯云函数部署.Net 5米游社原神每日签到功能

    自从GitHub批量禁止滥用Action功能后,项目不得不考虑另外方案执行应用.其中腾讯云函数被大家作为不错的选择(虽然马上也要收费了). 但对于.Net的部署目前资源很少,而且我也没学过bash.在 ...

  8. JuiceFS 在数据湖存储架构上的探索

    大家好,我是来自 Juicedata 的高昌健,今天想跟大家分享的主题是<JuiceFS 在数据湖存储架构上的探索>,以下是今天分享的提纲: 首先我会简单的介绍一下大数据存储架构变迁以及它 ...

  9. call()、apply()、arguments

    一.call(),apply() 1.作为函数对象(指函数方法名,不带括号)的方法,需要通过函数对象调用:当对函数调用这两个方法时都会调用函数执行. <script> // 这个函数中,f ...

  10. css修改文子背景浮动

    伪元素选择器 """通过css操作文本内容""" 1.修改首个字体样式 p:first-letter{ color: blue; font- ...