天天看點

python 實作 Centos 7.1 下系統自動分區并mount到/data*

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

<code>#/usr/bin/env python</code>

<code>import os,sys,time,re,traceback</code>

<code>class ceph_depoloy(object):</code>

<code>    </code><code>def __init__(self):</code>

<code>        </code><code>version = 1.0 </code>

<code>    </code><code>#Log insert </code>

<code>    </code><code>def LOG(self,info):</code>

<code>        </code><code>logfile = </code><code>'/tmp/ceph-deploy.log'</code>

<code>        </code><code>files = open(logfile,</code><code>'a'</code><code>)</code>

<code>        </code><code>try:</code>

<code>            </code><code>files.write(</code><code>'%s : %s'</code><code>%(time.ctime(),info))</code>

<code>        </code><code>except IOError:</code>

<code>            </code><code>files.close()</code>

<code>        </code><code>files.close()</code>

<code> </code> 

<code>    </code><code>#Disk format /dev/sd*</code>

<code>    </code><code>def diskFormat(self,disk,count):</code>

<code>            </code><code>key = os.popen(</code><code>"fdisk %s"</code> <code>%disk,</code><code>"w"</code><code>)</code>

<code>            </code><code>key.write(</code><code>'d \n'</code><code>)</code>

<code>            </code><code>key.write(</code><code>'n \n'</code><code>)</code>

<code>            </code><code>key.write(</code><code>'p \n'</code><code>)</code>

<code>            </code><code>key.write(</code><code>'1 \n'</code><code>)</code>

<code>            </code><code>key.write(</code><code>'\n \n'</code><code>)</code>

<code>            </code><code>key.write(</code><code>'w'</code><code>)</code>

<code>            </code><code>key.flush()</code>

<code>            </code><code>time.sleep(1)</code>

<code>            </code><code>os.system(</code><code>"""mkdir -p /data%s""</code><code>" %count)</code>

<code>            </code><code>os.system(""</code><code>"mkfs.xfs -f -i size=1024 %s1 ""</code><code>" %disk)</code>

<code>            </code><code>print ""</code><code>"mkfs.xfs -f -i size=1024 %s1 ""</code><code>" %disk</code>

<code>            </code><code>time.sleep(3)</code>

<code>            </code> 

<code>            </code><code>fp = open('/etc/fstab','r')</code>

<code>            </code><code>for i in fp:</code>

<code>                </code><code>if not re.search('sdb',i):</code>

<code>                    </code><code>cmds = ""</code><code>"%s1             /data1          xfs defaults     0 0 ""</code><code>" %disk</code>

<code>                    </code><code>os.system("</code><code>echo %s &gt;&gt; /etc/fstab</code><code>" %cmds)</code>

<code>                    </code><code>break</code>

<code>            </code><code>self.LOG("</code><code>Disk  %s format partion</code><code>" %disk )</code>

<code>        </code><code>except:</code>

<code>            </code><code>self.LOG(traceback.format_exc())</code>

<code>    </code> 

<code>    </code><code>#Get disk tag </code>

<code>    </code><code>def disk_tag(self):</code>

<code>        </code><code>disk_tags = list()</code>

<code>        </code><code>disk_part = list()</code>

<code>        </code><code>for ch in xrange(0x42, 0x5B): </code>

<code>            </code><code>disk_tags.append("</code><code>sd</code><code>%</code><code>s</code><code>" %unichr(ch).lower())</code>

<code>            </code><code>disk_part.append("</code><code>/dev/sd</code><code>%</code><code>s1</code><code>" %unichr(ch).lower())</code>

<code>        </code><code>return disk_tags</code>

<code>    </code><code>def work(self):</code>

<code>        </code><code>disks = list()</code>

<code>        </code><code>disk_tags = self.disk_tag()</code>

<code>        </code> 

<code>        </code><code>devs = os.listdir('/dev/')</code>

<code>        </code><code>count = 0 </code>

<code>        </code><code>for d in disk_tags:</code>

<code>            </code><code>if d in devs:</code>

<code>                </code><code>count += 1</code>

<code>                </code><code>disk = '/dev/%s' %d </code>

<code>                </code><code>self.diskFormat(disk.strip(),count)</code>

<code>if __name__ == "</code><code>__main__":</code>

<code>    </code><code>sc = ceph_depoloy()</code>

<code>    </code><code>sc.work()</code>

本文轉自 swq499809608 51CTO部落格,原文連結:http://blog.51cto.com/swq499809608/1718984