免费注册 查看新帖 |

Chinaunix

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

[系统管理] 批量进行格式化操作的疑问 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-01-28 17:15 |只看该作者 |倒序浏览
本帖最后由 93846273 于 2013-01-28 17:43 编辑

请教一下CU的shell板块大牛们。
条件如下,有100台机器,每台机器都配备6快盘,比如sda,sdb,sdc,sdd,sde,sdf。
每台机器都坏了2块盘或3块盘,并且每台机器坏盘的位置不一样,比如ip为1.1.1.1的机器坏了sdc和sdf,2.2.2.2的机器坏了sdb、sdd、sde。
现在我需要同时登陆100多台机器对这些坏盘进行重新分区、格式化、挂载等操作。
思路是这样式的。总共有3个文件,其中一个是shell文件,第二个是expect文件文件,第三个文件的内容是服务器地址以及对应的坏盘信息。
第一个文件:autofdisk.sh的内容如下。
  1. #!/bin/bash
  2. #autofdisk script

  3.     while read line
  4.         do

  5.             t1=`echo $line |awk '{print $1}'`
  6.             t2=`echo $line |awk '{print $2}'`
  7.             expect autofdisk.exp $t1 $t2
  8. )&
  9.         done < ./host
  10. wait
复制代码
第二个文件autofdisk.exp的内容如下。
  1. #!/usr/bin/expect -f

  2. set timeout 600
  3. set passwd 123456
  4. set hosts [lindex $argv 0]
  5. set disk [lindex $argv 1]
  6. spawn ssh $hosts
  7. expect {
  8.         "(yes/no)"  {send "yes\r";exp_continue}
  9.         "password:" {send "$passwd\r"}
  10. }
  11. expect -re "($|#)";send "fdisk /dev/$disk\r"
  12. expect "):";send "d\r"
  13. expect "):";send "n\r"
  14. expect "4)";send "p\r"
  15. expect "):";send "1\r"
  16. expect "):";send "\r"
  17. expect "):";send "\r"
  18. expect "):";send "w\r"
  19. expect -re "($|#)";send "exit\r"
  20. expect eof
复制代码
第三个文件的内容如下。
  1. cat ./host
  2. 1.1.1.1 sdc
  3. 1.1.1.1 sdf
  4. 2.2.2.2 sdb
  5. 2.2.2.2 sdd
  6. 2.2.2.2 sde
复制代码
问题如下,现在是并发登陆多台机器,但是如何控制登陆每台机器后所进行的磁盘分区、格式化、挂载等操作是串行的,比如对于1.1.1.1,先分区、格式化、挂载sdc,等sdc挂载完成之后再对sdf进行分区、格式化、挂载。 host的文件格式可以灵活多变比如.
1.1.1.1 sdc sdf
2.2.2.2 sdb sdd sde

论坛徽章:
9
2015亚冠之阿尔纳斯尔
日期:2015-09-10 16:21:162015亚冠之塔什干火车头
日期:2015-07-01 16:23:022015年亚洲杯之巴勒斯坦
日期:2015-04-20 17:19:46子鼠
日期:2014-11-13 09:51:26未羊
日期:2014-08-28 18:13:36技术图书徽章
日期:2014-02-21 09:30:15酉鸡
日期:2014-01-14 11:12:49天蝎座
日期:2013-12-09 17:56:53平安夜徽章
日期:2015-12-26 00:06:30
2 [报告]
发表于 2013-01-28 17:35 |只看该作者
回复 1# 93846273
按你写的,不同主机本来就是顺序执行
同机器,修改autofdisk.sh,判断下传入的坏盘参数个数,再对每个盘顺序执行


   

论坛徽章:
0
3 [报告]
发表于 2013-01-28 17:45 |只看该作者
回复 2# HH106
编辑了一下文件内容,通过()&wait控制了并发登陆,每台机器坏盘的数量不一样,那么如何进行传递呢?

论坛徽章:
9
2015亚冠之阿尔纳斯尔
日期:2015-09-10 16:21:162015亚冠之塔什干火车头
日期:2015-07-01 16:23:022015年亚洲杯之巴勒斯坦
日期:2015-04-20 17:19:46子鼠
日期:2014-11-13 09:51:26未羊
日期:2014-08-28 18:13:36技术图书徽章
日期:2014-02-21 09:30:15酉鸡
日期:2014-01-14 11:12:49天蝎座
日期:2013-12-09 17:56:53平安夜徽章
日期:2015-12-26 00:06:30
4 [报告]
发表于 2013-01-28 18:05 |只看该作者
回复 3# 93846273
  1. #!/bin/bash
  2. #autofdisk script
  3. while read ip disk
  4. do
  5. (
  6.         for i in $disk
  7.         do
  8.                 expect autofdisk.exp $ip $i
  9.         done
  10. )&
  11.         done < ./host
  12. wait
复制代码

论坛徽章:
0
5 [报告]
发表于 2013-01-29 10:26 |只看该作者
回复 4# HH106
按照上述格式的话,如果一台机器坏了2块盘,那么相当于是同一台机器需要登陆2遍,并且并行处理多台机器格式化有点问题。。。

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP