前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >同时管理多台服务器的expect脚本

同时管理多台服务器的expect脚本

作者头像
小小科
发布2018-05-02 16:53:21
1.5K0
发布2018-05-02 16:53:21
举报
文章被收录于专栏:北京马哥教育北京马哥教育

最近通过exploring expect书籍,简单学了下expect脚本语言,这个脚本语言是tcl语言的扩展,用来解决一些工具无法自动交互的问题,如ssh登录时,无法在命令就指定密码等。下面是利用expect来实现管理多台服务器的简单例子:

  1. #!/usr/bin/expect
  2. #purpose:auto run command on multiple servers
  3. #how to: mms <user> <cmd>
  4. #write by zhumaohai.
  5. #blog:http://www.centos.bz/
  6. if {$argc < 2} {
  7. puts "usage: mms <user> <cmd>"
  8. exit 1
  9. }
  10. #set servers
  11. set SERVERS {"192.168.0.100" "192.168.0.101" "192.168.0.102"}
  12. #set password
  13. set PASSWORDS(user1) "passwd1"
  14. set PASSWORDS(user2) "passwd2"
  15. #get virables
  16. set USER [lindex $argv 0]
  17. set CMD [lrange $argv 1 end]
  18. set passwd $PASSWORDS($USER)
  19. foreach x $SERVERS {
  20. eval spawn ssh -l $USER $x $CMD
  21. expect {
  22. "password" { send "$passwd\r" }
  23. "yes/no" { send "yes\r";exp_continue; }
  24. }
  25. expect eof
  26. }

1、这里定义了三台服务器192.168.0.100 192.168.0.101 192.168.0.102,定义了用户user1的密码为passwd1,用户user2的密码为passwd2,假如脚本文件名为ms,用法为: ./ms 用户 命令 如./ms user1 date 2、在使用脚本时,请确认系统已经安装有expect命令,centos使用yum install expect安装,ubuntu使用apt-get install expect安装。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2014-08-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 马哥Linux运维 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档