精华内容
下载资源
问答
  • Expect

    2021-01-07 21:10:31
    Expect的作者Don Libes在1990年开始编写Expect时对Expect做有如下定义:Expect是一个用来实现自动交互功能的软件套件 (Expect [is a] software suite for automating interactive tools)。 二、Expect工作原理  从...

    一、Expect概述
      Expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。Expect的作者Don Libes在1990年开始编写Expect时对Expect做有如下定义:Expect是一个用来实现自动交互功能的软件套件 (Expect [is a] software suite for automating interactive tools)。
    二、Expect工作原理
      从最简单的层次来说,Expect的工作方式象一个通用化脚本工具。用来实现计算机之间需要建立连接时进行特定的登录会话的自动化。
       脚本由一系列expect-send对组成:expect等待输出中输出特定的字符,通常是一个提示符,然后发送特定的响应。
    三、安装
    [root@localhost ~]# yum -y install expect tcl tclx tcl-devel
    四、示例(解决人机交互的问题)
    1.示例1:通过expect解决ssh交互问题(登录验证免交互)

    [root@localhost ~]# vim ex.exp
    #!/usr/bin/expect
    spawn ssh root@10.8.161.173   //spawn  expect 内部命令,启动一个shell程序。
    expect {                 //expect 期望哪些内容
     "yes/no" { send "yes\r" ; exp_continue }  //yes/no  就send发送 yes ,\r  表示回车 ;exp_continue,跳过循环,就继续下一条语句。
     "password:" { send "centos\r" };  //password 就send发送密码
    }
    interact   //interact 允许用户交互,保留对话
    
    [root@localhost ~]# expect ex.exp    //运行脚本命令为expect
    spawn ssh root@10.8.161.173
    root@10.8.161.173's password: 
    
    [root@localhost ~]# ip a   //远程登录成功,查看ip
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 00:0c:29:58:e1:55 brd ff:ff:ff:ff:ff:ff
        inet 10.8.161.173/24 brd 10.8.161.255 scope global noprefixroute dynamic ens33
           valid_lft 257991sec preferred_lft 257991sec
        inet6 fe80::b253:d870:7f74:52c8/64 scope link tentative noprefixroute dadfailed 
           valid_lft forever preferred_lft forever
        inet6 fe80::7801:a245:f982:a228/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    

    2.示例2:expect实战:公钥推送

    [root@localhost ~]# vim expect.sh 
    #!/bin/bash
    #创建一个IP地址文件
    >ip.txt
    #检测expect是否安装
    rpm -q expect &> /dev/null
    if [ $? -ne 0 ];then
    yum install -y expect tcl tclx tcl-devel
    fi
    #检测公钥是否创建
    if [ ! -f ~/.ssh/id_rsa ];then
    ssh-keygen -P " " -f ~/.ssh/id_rsa
    fi
    ip=10.8.161.173
    #ping测试主机是否在线
    ping -c1 -W1 $ip &>/dev/null
    if [ $? -eq 0 ];then
    echo "$ip" >> ip.txt
    /usr/bin/expect <<-EOF
    set timeout 10
    spawn ssh-copy-id $ip
    expect {
    "yes/no" {send "yes\r";exp_continue}
    "password:" {send "centos\r"};
    }
    expect eof
    EOF
    fi
    
    [root@localhost ~]# bash expect.sh 
    spawn ssh-copy-id 10.8.161.173
    /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
    /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
    
    /usr/bin/ssh-copy-id: WARNING: All keys were skipped because they already exist on the remote system.
                    (if you think this is a mistake, you may want to use -f option)
    
    expect: spawn id exp6 not open
        while executing
    "expect eof"
    
    [root@localhost ~]# ssh root@10.8.161.173
    Last login: Thu Jan  7 20:43:46 2021 from 10.8.161.66
    [root@localhost ~]# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 00:0c:29:58:e1:55 brd ff:ff:ff:ff:ff:ff
        inet 10.8.161.173/24 brd 10.8.161.255 scope global noprefixroute dynamic ens33
           valid_lft 244538sec preferred_lft 244538sec
        inet6 fe80::b253:d870:7f74:52c8/64 scope link tentative noprefixroute dadfailed 
           valid_lft forever preferred_lft forever
        inet6 fe80::7801:a245:f982:a228/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    

    拓展:
    在这里插入图片描述

    展开全文
  • expect

    2020-02-23 21:49:25
    yum list| grep expect //查看安装expect没 yum -y install expect //安装expect rpm -ql expect

    在这里插入图片描述

    yum list| grep expect //查看安装expect没
    yum -y install expect //安装expect
    rpm -ql expect 
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 105,446
精华内容 42,178
关键字:

expect