您好,欢迎来到钮旅网。
搜索
您的当前位置:首页linux下expect的简单使用

linux下expect的简单使用

来源:钮旅网
linux下expect的简单使⽤

expect 可以模拟⽤户⾏为做⼀些shell操作, 如ssh登陆远程服务器, 模拟⽤户执⾏ssh命令, 输⼊密码, 并在远程服务器上操作等模拟⽤户开启或重启nginx进程代码:

1 #!/usr/bin/expect -f

2 set n [exec ps -ef | grep nginx | grep -v grep | wc -l] #执⾏shell命令并将结果赋值给变量n 3 send_user $n #控制台输出n 4 if { $n>=1 } { #条件判断

5 spawn sudo nginx -s reload #执⾏命令 6 } else {

7 spawn sudo nginx 8 }

9 expect {

10 \"*password*\" { send \"123456a\\r\" } #输⼊密码11 }

12 interact

expect语法参考:

1. expect中的判断语句: 1. if { condition } {2. # do your things3. } elseif {

4. # do your things5. } else {

6. # do your things7. }

expect中没有⼩括号(),所有的if/else, while, for的条件全部使⽤⼤括号{}, 并且{ 与左边要有空格,否则会报错。另,else 不能单独占⼀⾏,否则会报错。2. 字符串⽐较

1. if { \"$node\" == \"apple\" } {2. puts \"apple\"

3. } elseif { \"$node\" == \"other\" } {4. puts \"invalid name\"5. exit 706. } else {

7. puts \"asd\"8. }

对⽐string,使⽤==表⽰相等, !=标⽰不相等。3. switch 语句

1. switch $location {

2. \"apple\" { puts \"apple\" }3. \"banana\" { puts \"banana\" }4. default {

5. puts \"other\"6. }7. }

记得左⼤括号{ 的左边要有空格,否则会报错4. 读取⽤户输⼊

1. expect_user -re \"(.*)\\n\"

2. send_user \"$expect_out(1, string)\\n\"

expect_user -re 表⽰正则表达式匹配⽤户按下回车前输⼊的所有字符expect_out(1, string) 表⽰第⼀个匹配的内容,即回车前所有字符expect_out(buffer) 所有的buffer内容5. break && continue

如c中⼀样,expect⼀样可以使⽤break && continue, 并且功能相同。注:只能⽤在循环中。6. 定义交互命令

1. # stick control + z in variable2. set ControlZ \\032

3. # stick control + c in variable

4. set ControlC \\x03

5. # define string embedded ctrl-z && tab6. set oddword foo\\032bar\gorp

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- niushuan.com 版权所有 赣ICP备2024042780号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务