Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1633288
  • 博文数量: 409
  • 博客积分: 6240
  • 博客等级: 准将
  • 技术积分: 4908
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-01 00:04
文章分类

全部博文(409)

文章存档

2021年(1)

2019年(1)

2017年(1)

2016年(13)

2015年(22)

2013年(4)

2012年(240)

2011年(127)

分类:

2011-08-25 09:28:39

原文地址:我的第一个expect脚本 作者:zooyo

    昨天才看了expect资料,下午工作不忙写了个脚本改密码的,代替passwd交互。
  1. #!/usr/bin/expect --

  2. set timeout 30
  3. set name [lindex $argv 0]
  4. set pw [lindex $argv 1]
  5. log_user 0
  6. spawn passwd $name
  7. for {set i 1} {$i < 3} {incr i} {
  8.     expect "*password:" {send "$pw\r"}
  9. }
  10. expect "*successfully"
  11.     send_user "Password updated successfully\n"
  12. expect eof

[解析]

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

 

 

  1. #!/usr/bin/expect --

  2. set timeout 30
  3. set name [lindex $argv 0]
  4. set pw [lindex $argv 1]
  5. log_user 0
  6. spawn passwd $name
  7. expect {
  8.     "password" {send "$pw\r";exp_continue}
  9.     "su" {puts "Password updated successfully"}
  10. }
  11. expect eof

[解析]

  这个脚本更简单利用了"exp_continue",匹配到password字样的就发送密码然后再返回到花括号开始重新执行,到了第3次匹配不到password字样了,匹配了su ,然后输出到屏幕。

阅读(898) | 评论(0) | 转发(0) |
0

上一篇:Oracle日常性能查看

下一篇:linux sleep 用法

给主人留下些什么吧!~~