• CentOS6.3上搭建expect无交互开发环境


    1.背景

        在面向shell编程时对于需要交互的场合则必须通过人工来干预,而对于这种方式是违反无人职守的原则;现在expect就解决了这个问题,

    Expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。

        Expect是在Tcl基础上创建起来的,用来做一些linux下无法做到交互的一些命令操作,在远程管 理方面发挥很大的作用。

        spawn命令激活一个Unix程序来进行交互式的运行。 
        send命令向进程发送字符串。
        expect 命令等待进程的某些字符串。 
        expect支持正规表达式并能同时等待多个字符串,并对每一个字符串执行不同的操作。

    2.安装

        在安装expect之前需要先安装TCL(最早称为工具命令语言”"Tool Command Language", 但是目前已经不是这个含义,不过我们仍然称呼它为TCL)是一种 脚本语言。

        这里使用的安装包:tcl8.4.20-src.tar.gz 和 expect5.45.tar.gz

        tar  zxvf  tcl8.4.20-src.tar

        cd  tcl8.4.20

        ./configure --prefix=/usr/local/tcl --enable-shared

        make

        make install

        TCL安装完毕,下面安装expect

        tar  zxvf  expect5.45.tar.gz

        cd  expect5.45

        ./configure --prefix=/usr/local/expect

        make

        make install

        expect到此就安装结束了,expect的安装目录在/usr/local/expect;但可执行文件却不在该目录下,我们可以使用find命令来查找,如:find / -name expect

    一般情况下,expect与tcl在一起的,我的存放的地方在:/usr/local/tcl/bin/expect ;如果觉得这个路径太长或者不合,可以使用软链接到你想的位子上。

    3.代码验证

    ScpStart()
    {

        line=11.22.33.44    #IP地址
        /usr/local/bin/expect << EOF
        set time 20
        spawn scp -r /opt/upProtocol/ptcBinPacket root@$line:/opt
        expect {
            "*yes/no*"
            { send "yes ";exp_continue }
            "*password:"
            { send "xxxxxx "}
        }
        expect eof
    EOF

    if [ $? -eq 0 ]
    then
        echo "复制文件到$line成功!"
    else
        echo "复制文件到$line失败!"
    fi
    }

  • 相关阅读:
    IfcSameDirection
    IfcSameCartesianPoint
    java多个文件合并为一个文件
    matlab pan_tompkin算法
    IfcSameAxis2Placement
    IfcOrthogonalComplement
    IfcNormalise
    IfcMakeArrayOfArray
    matlab 日期 年月日时分秒毫秒
    IfcListToArray
  • 原文地址:https://www.cnblogs.com/xiehy/p/6900344.html
Copyright © 2020-2023  润新知