交互式脚本,expect用法小结

来源:互联网 发布:仿真实验软件 编辑:程序博客网 时间:2024/06/04 18:27

       在编写一些脚本时,有时候需要与计算机进行交互,比如ssh连接时输入密码,fdisk命令进行分区。这时候expect工具的强大和好用就体现出来了。

       使用expect工具前,先检查是否安装了expect包,安装之后默认在/usr/bin/expect

#!/usr/bin/expect             #这个是使用expect工具的环境

set timeout  +数字      #设置超时时间,单位是秒

set  变量名 变量值 

set  变量名 [linedex $argv 0 ]     #意思是这个变量值从你执行脚本的后面第一个参数获得

                                                 #argv 1 是第二个参数获得,一次类推到9,如果是第十                                                  # 一个参数用 argv {10}

比如  ./test.sh  10                      #10 就是argv 0

spawn  commd                         #表示启动一个名为“commd”的命令,并由expect监控

expect  "***"                              #匹配某个为“***”字符

send    "**\r"                             #如果匹配到,传入**参数

interact                                     #交给控制台控制  

expect eof                               #表示子程序的结束,如果交给控制台控制,可以不加


处于初学shell脚本阶段,这是一次小结。

附一段自己写的分区脚本

#!/usr/bin/expect 
set dev [lindex $argv 0]
set num [lindex $argv 1]
spawn fdisk $dev 
expect "help):"
send "n\r"
expect "p):"
send "p\r"
expect "):"
send "$num\r"
expect "):"
send "\r"
expect "):"
send "+500M\r"
expect "help):"
send "p\r"
expect "help):"
send "wq\r"
interact

0 0
原创粉丝点击