关于linux:linux-expect语言脚本的学习

42次阅读

共计 969 个字符,预计需要花费 3 分钟才能阅读完成。

1、头部第一行必须是这个

#!/usr/bin/expect        ##### 定义了是什么脚本器 

2、接管参数

set name [lindex $argv 0]
set name2 [lindex $argv 1]
puts $argvc
puts $argv0
expect eof
exit
#set 赋值参数的意思
#name 参数名,设置时不须要加任何符号,前面对该参数的调用时须要加 $ 符号,$name
#[lindex $argv 0] 参数写法就是这样,0 示意第一个参数
#puts 输入字符串
#$argvc 参数数量
#$argv0 文件名
#最初是期待标示子过程已完结的标示符 eof,而后退出。(注:这个期待 eof 必须要有,如果没有 eof,很可能在子过程没有完结前就退出,造成问题。)#执行的格局
./test.exp 参数 0 参数 1 

3、执行命令

set timeout 5
spawn ssh test@172...
expect "*password*"
send“my_password\r”interact
#这几句个别都一起用
#set timeout 是设置过期工夫,例如 spawn 执行的 shell 语句如果超时了,没有匹配到 expect 的字符串,就会继续执行下一个语句
#spawn 执行 shell 命令,会 fork 出一个子过程执行
#expect 执行完 shell 命令之后冀望承受的字符串,反对正则匹配
#send 示意输出,记得要写 \r,回车让程序执行
#设想一下平时本人用 ssh 近程登录服务器就能了解什么意思了,输出完 ip 地址之后,都须要手动输出明码,用 expect 能够主动实现

##interact,执行完之后子过程把用户权交回给用户,会定位到以后子过程中,例如你执行完近程登录,就必定是停留在近程的服务器里 

4、其余语法格局

##switch
set color  [lindex $argv 0]
switch  $color  {
        apple {puts "apple is blue"}
        banana {puts "banana is yellow"}
}

##if
if {"$test" == "apple"} {puts "$test"} else  {puts "not apple"}

##for
for {set i 0} {$i<4} {incr i} {puts "$i"}

##while
while {$i<4} {
        puts "$i"
        incr i
}

## 定义函数
proc test {} {puts "ok"}

正文完
 0