Linux中的expect命令

---恢复内容开始---

expect介绍

 借助Expect处理交互的命令,可以将交互 过程如:ssh登录,ftp登录等写在一个脚本上,使之自动化完成.尤其适用于需 要对多台服务器执行相同操作的环境中,可以大大提高系统管理人员的工作效率 

expect语法:

  

 expect [选项] [ -c cmds ] [ [ -[f|b] ] cmdfile ] [ args ] 

    选项 

          -c:从命令行执行expect脚本,默认expect是交互地执行的   

                示例:expect -c 'expect "\n" {send "pressed enter\n"} 

         -d:可以输出输出调试信息   

               示例:expect  -d ssh.exp

          expect中相关命令 

                spawn:启动新的进程 

                send:用于向进程发送字符串 

                expect:从进程接收字符串 

                interact:允许用户交互

               exp_continue  匹配多个字符串在执行动作后加此命令 

 

     expect最常用的语法(tcl语言:模式-动作) 

        单一分支模式语法: 

              expect “hi” {send “You said hi\n"}           匹配到hi后,会输出“you said hi”,并换行

        多分支模式语法: 

              expect "hi" { send "You said hi\n" } \ "hehe" { send “Hehe yourself\n" } \ "bye" { send “Good bye\n" } 

        匹配hi,hello,bye任意字符串时,执行相应输出.等同如下:

             expect { "hi" { send "You said hi\n"} "hehe" { send "Hehe yourself\n"} "bye" { send “Good bye\n"} } 

 

执行expect 不能以bash file 的方式来执行        (开启一个子shell进程)

    必须通过  chmod +x file     ./file  这样的方式    (不会开启子shell进程,只在当前shell环境中执行)

    expect 如果只交互一次如拷贝文件   结尾就使用                                            expect eof 

              如果需要连续交互如登录远程主机执行各种命令结尾就需使用           interact

set 主要是显示系统中已经存在的shell变量,以及设置shell变量的新变量值。使用set更改shell特性时,符号”+”和”-“的作用分别是打开和关闭指定的模式。set命令不能够定义新的shell变量。如果要定义新的变量,可以使用declare命令以 变量名=值 的格式进行定义即可。

unset 用于删除已定义的shell变量(包括环境变量)和shell函数。unset命令不能够删除具有只读属性的shell变量和环境变量。

set常用参数

  1. -a 标示已修改的变量,以供输出至环境变量。

  2. -b 使被中止的后台程序立刻回报执行状态。

unset 常用参数

  1. -f 仅删除函数

  2. -v 仅删除变量

posted @ 2019-07-15 17:23  {Dxd}  阅读(397)  评论(0)    收藏  举报