- 論壇徽章:
- 0
|
本帖最后由 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。
現(xiàn)在我需要同時登陸100多臺機器對這些壞盤進行重新分區(qū)、格式化、掛載等操作。
思路是這樣式的?偣灿3個文件,其中一個是shell文件,第二個是expect文件文件,第三個文件的內(nèi)容是服務(wù)器地址以及對應(yīng)的壞盤信息。
第一個文件:autofdisk.sh的內(nèi)容如下。- #!/bin/bash
- #autofdisk script
- while read line
- do
- (
- t1=`echo $line |awk '{print $1}'`
- t2=`echo $line |awk '{print $2}'`
- expect autofdisk.exp $t1 $t2
- )&
- done < ./host
- wait
復(fù)制代碼 第二個文件autofdisk.exp的內(nèi)容如下。- #!/usr/bin/expect -f
- set timeout 600
- set passwd 123456
- set hosts [lindex $argv 0]
- set disk [lindex $argv 1]
- spawn ssh $hosts
- expect {
- "(yes/no)" {send "yes\r";exp_continue}
- "password:" {send "$passwd\r"}
- }
- expect -re "($|#)";send "fdisk /dev/$disk\r"
- expect "):";send "d\r"
- expect "):";send "n\r"
- expect "4)";send "p\r"
- expect "):";send "1\r"
- expect "):";send "\r"
- expect "):";send "\r"
- expect "):";send "w\r"
- expect -re "($|#)";send "exit\r"
- expect eof
復(fù)制代碼 第三個文件的內(nèi)容如下。- cat ./host
- 1.1.1.1 sdc
- 1.1.1.1 sdf
- 2.2.2.2 sdb
- 2.2.2.2 sdd
- 2.2.2.2 sde
復(fù)制代碼 問題如下,現(xiàn)在是并發(fā)登陸多臺機器,但是如何控制登陸每臺機器后所進行的磁盤分區(qū)、格式化、掛載等操作是串行的,比如對于1.1.1.1,先分區(qū)、格式化、掛載sdc,等sdc掛載完成之后再對sdf進行分區(qū)、格式化、掛載。 host的文件格式可以靈活多變比如.
1.1.1.1 sdc sdf
2.2.2.2 sdb sdd sde |
|