zoukankan      html  css  js  c++  java
  • Expect安装方法

    Expect是基于Tcl语言的一种脚本语言,其实无论是交互还是非交互的应用场合,Expect都可以大显身手,但是对于交互式的特定场合,还非Except莫属。 

    第1步:使用root用户登录 
           
    第2步:复制安装文件 
           
           在合适的位置创建一个文件夹,例如soft 
           修改文件夹读写权限 
           chmod 777 soft 

    第3步:解压安装包 
           [我已经上传了expect-5.43.0.tar.gz 和 tcl8.4.11-src.tar.gz 在本文后面可以点击下载] 
           把expect-5.43.0.tar.gz和tcl8.4.11-src.tar.gz复制到soft目录下, 
           解压tcl8.4.11-src.tar.gz 
           tar –xvf tcl8.4.11-src.tar.gz 
           解压后将创建tcl8.4.11 文件夹 

           解压expect-5.43.0.tar.gz 
           tar –xvf expect-5.43.0.tar.gz 
           解压后将创建expect-5.43 文件夹 
           目录结构如下图(SSH登录的截图)所示: 
            
           
           上图中可以看出在/soft下有tcl8.4.11和tcl8.4.11 两个文件夹 

    第4步:安装tcl 
           进入/soft/tcl8.4.11/unix 目录 
            a.执行sed -i "s/relid'/relid/" configure 
            b.执行./configure --prefix=/expect 
            c.执行make 
            d.执行make install 
            e.执行mkdir -p /tools/lib 
            f.执行cp tclConfig.sh /tools/lib/ 
            g. 将/tools/bin目录export到环境变量 
               tclpath=/tools/bin 
               export tclpath 

    第5步:安装Expect 
            进入/soft/expect-5.43目录 
            执行./configure --prefix=/tools --with-tcl=/tools/lib --with-x=no 
            如果最后一行提示: 
            configure: error: Can't find Tcl private headers 
            需要添加一个头文件目录参数 
            --with-tclinclude=../tcl8.4.11/generic,即 
            ./configure --prefix=/tools --with-tcl=/tools/lib --with-x=no --with-tclinclude=../tcl8.4.11/generic 
            ../tcl8.4.11/generic 就是tcl解压安装后的路径,一定确保该路径存在 
            执行make 
            执行make install 
            编译完成后会生在/tools/bin内生成expect命令 
            执行/tools/bin/expect出现expect1.1>提示符说明expect安装成功. 

    第6步:创建一个符号链接 
            ln -s /tools/bin/expect /usr/bin/expect 
            查看符号连接 
            ls -l /usr/bin/expect 
            lrwxrwxrwx 1 root root 17 06-09 11:38 /usr/bin/expect -> /tools/bin/expect 

            这个符号链接将在编写expect脚本文件时用到,例如在expect文件头部会指定用于执行该脚本的shell 
            #!/usr/bin/expect 
            ... 
            ... 

    ----------------------

    1.下载expect和tcl

    下载地址:http://download.csdn.net/download/tobyaries/5754943

    2.安装expect

    tar -zxvf tcl8.4.11-src.tar.gz 
    tar -zxvf expect-5.43.0.tar.gz 
    cd tcl8.4.11/unix
     ./configure
    make && make install

    cd expect-5.43

    ./configure --with-tcl=/usr/local/lib/ --with-tclinclude=/data/software/tcl8.4.11

    make && make install

    3.脚本测试

    [plain] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. #!/usr/bin/expect -f  
    2.   
    3.   
    4. set timeout 30  
    5. set name [lindex $argv 0]  
    6. set pw [lindex $argv 1]  
    7. log_user 0  
    8. spawn passwd $name  
    9. for {set i 1} {$i < 3} {incr i} {  
    10.     expect "*password:" {send "$pw "}  
    11. }  
    12. expect "*successfully"  
    13.     send_user "Password updated successfully "  
    14. expect eof  



    [解析]

      很简单的程序,首先把第一个参数赋值给变量name作为用户名,把第二个参数赋值给pw作为密码。然后关闭标准输出,就是类似shell的 "> /dev/null",然后spawn开启子进程运行passwd程序,因为会重复输入2次密码,所以这里我们用到了TCL语法的for循环,执行2次密码输入。最后匹配到successfully字样的就输出修改成功,然后退出脚本。

     
  • 相关阅读:
    一周进度条博客
    4.8地铁查询开发进度
    4.7地铁查询开发进度
    4.6地铁查询系统开发进度
    大二下第六周学习进度报告
    4.5地铁查询系统开发进度2
    《构建之法》阅读笔记03
    石家庄地铁查询系统开发进度
    《构建之法》阅读笔记02
    大二下第五周学习笔记
  • 原文地址:https://www.cnblogs.com/anruy/p/5891782.html
Copyright © 2011-2022 走看看