• expect自动应答


    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
    "		--我就把456传给它
    	expect "password:"		--当再次停在rd:结尾这个标识符时
    	send "456
    "		--我就再次把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
    "
    	expect "password:"
    	send "123456
    "
    	expect "]#"
    	send "mkdir /root/Desktop/aa
    "
    	send "touch /root/Desktop/aa/$1
    "
    	send "exit
    "
    	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
    "
    	expect "rd:"
    	send "$password
    "
    	expect "]#"
    	send "touch /tmp/123
    "		--这里可以修改你每次要在这些机器上做的命令
    	send "exit
    "
    	expect eof
    	EOF
    	done
    

      

  • 相关阅读:
    Excel.Application使用手册
    VMwareworkstationfull9.0.1894247+汉化补丁(2013.1.22)+有效密钥
    3个月ESET全系列产品试用用户名和密码
    各大安软官方卸载工具
    MDX语法学习filter与iif的使用
    SET XACT_ABORT 用法
    wcf传输List<t>
    存储过程中SELECT与SET对变量赋值
    SQL Server 定时备份数据库(作业)
    数据仓库MDX实际应用
  • 原文地址:https://www.cnblogs.com/The-day-of-the-wind/p/12064446.html
Copyright © 2020-2023  润新知