zoukankan      html  css  js  c++  java
  • 【转】CentOS下expect 安装

     
    Expect是在Tcl基础上创建起来的,它还提供了一些Tcl所没有的命令,它可以用来做一些linux下无法做到交互的一些命令操作,在远程管理方面发挥很大的作用。
    spawn命令激活一个Unix程序来进行交互式的运行。 
    send命令向进程发送字符串。
    expect 命令等待进程的某些字符串。 
    expect支持正规表达式并能同时等待多个字符串,并对每一个字符串执行不同的操作.
     
     
    A. Tcl 安装 
    主页: http://www.tcl.tk
    下载地址: http://www.tcl.tk/software/tcltk/downloadnow84.tml
     
    1.下载源码包
    wget http://nchc.dl.sourceforge.net/sourceforge/tcl/tcl8.4.11-src.tar.gz
     
    2.解压缩源码包
    tar xfvz tcl8.4.11-src.tar.gz
     
    3.安装配置
    cd tcl8.4.11/unix
    ./configure --prefix=/usr/tcl --enable-shared
    make
    make install
     
    安装完毕以后,进入tcl源代码的根目录,把子目录unix下面的tclUnixPort.h copy到子目录generic中。
    暂时不要删除tcl源代码,因为expect的安装过程还需要用。
     
    B. expect 安装 (需Tcl的库)
    主页: http://expect.nist.gov/
     
    1.下载源码包
    wget http://sourceforge.net/projects/expect/files/Expect/5.45/expect5.45.tar.gz
     
    2.解压缩源码包
    tar xzvf expect5.45.tar.gz
     
    3.安装配置
    cd expect5.45
    ./configure --prefix=/usr/expect --with-tcl=/usr/tcl/lib --with-tclinclude=../tcl8.4.11/generic
     
    make
    make install
    ln -s /usr/tcl/bin/expect /usr/expect/bin/expect
     
    最后
    cp /usr/expect/bin/expect /usr/bin/
    即可执行expect命令
     
    ===============实例=============================
    登录到192.168.1.35机器上,执行ifconfig eth0 和 df-h 退出,实例:

    #!/bin/bash
    ip1="192.168.1.35"
    command="ssh -l root -p 22 $ip1"

    expect -c "
    spawn $command;
    expect {
    "$ip1's password:" {send "admin^ "; exp_continue}
    "root@" {send "ifconfig eth0 df -h exit "; exp_continue}
    }
    "

    ip=(192.168.1.35 
    192.168.1.38)
    for i in ${ip[@]}
    do
    echo $i
    done

    ==================================================================================
    参考如下:
    #!/usr/bin/expect
    set timeout 10
    set host [lindex $argv 0]
    set username [lindex $argv 1]
    set password [lindex $argv 2]
    set src_file [lindex $argv 3]
    set dest_file [lindex $argv 4]
    spawn scp $src_file $username@$host:$dest_file
    expect {  
    "(yes/no)?"  
    {
    send "yes
    "
    expect "*assword:" { send "$password
    "}
    }  
    "*assword:"
    {
    send "$password
    "
    } 
    } 
    expect "100%"
    expect eof 

    上述重命名scp_scp.sh 

    若批量执行,则外套一个脚本调用

    ./scp_scp.sh 192.168.1.110 root password /etc/hosts /etc/hosts

    【转】http://www.jb51.net/article/34005.htm

    ==================================================================================
    【转】http://blog.sina.com.cn/s/blog_65f27fc20101fjm9.html
    做个备份
  • 相关阅读:
    【洛谷P4137】Rmq Problem / mex【主席树】
    【洛谷P4168】蒲公英【分块】
    【洛谷P4168】蒲公英【分块】
    【POJ3422】Kaka's Matrix Travels【费用流】
    【POJ3422】Kaka's Matrix Travels【费用流】
    【USACO3.1】解题报告
    【USACO3.1】解题报告
    【USACO3.1.5】【洛谷P2724】联系 Contact【模拟】
    【USACO3.1.5】【洛谷P2724】联系 Contact【模拟】
    死锁
  • 原文地址:https://www.cnblogs.com/zhzhang/p/5979944.html
Copyright © 2011-2022 走看看