免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4620 | 回复: 4
打印 上一主题 下一主题

shell分享-利用expect批量关掉的Linux服务器 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-07 15:40 |只看该作者 |倒序浏览
记得有一次 IDC 电力割接,托管在那儿的近百台服务器需要做这个关机的操作

想一想
每台登入后输入halt 或者shutdown -h now关掉的话
一台花一分钟,关掉这些机器就得1个小时

这个任务是非常艰巨的,工作量比较大........
没办法,怕直接掉电机器起不来,结果安排了好几位运维的兄弟,那些人负责那几台,那些负责检查.........
当然,如果所有的服务器SSH登陆都信任一个机器,在这个机器直接执行ssh IP地址 shutdown -h now可以了

用的是密码登陆,今天搞expect,于是想到这个shell

适应于:
1.同一网段
2.同样的root密码
3.在这个执行shell的机器之前登陆过所有需要关掉的服务器

#!/usr/bin/expect -f
#by:Leif Updated:2008-10-07 PM E-mail:liangliwen # gmail.com

for {set x 1} {$x<255} {incr x} {
spawn ssh -l root 192.168.10.$x
expect “*password:”
send “123456\r”
expect “*#”
send “hostname\r”
expect “*#”
send “shutdown -h now;exit”
}

expect 的for 用法根bash不一样

论坛徽章:
0
2 [报告]
发表于 2008-10-07 23:26 |只看该作者
学习了 支持

论坛徽章:
0
3 [报告]
发表于 2008-10-08 12:21 |只看该作者
很好,谢谢了

论坛徽章:
0
4 [报告]
发表于 2008-10-09 15:54 |只看该作者
用perl  net::ssh  也可。

论坛徽章:
0
5 [报告]
发表于 2008-10-09 16:23 |只看该作者
为什么要send “hostname\r” ,这个命令运行一遍干吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP