本脚本是2.6.6环境下使用的~

####################################################################################
#coding=utf-8                                     
#脚本用途:自动挂载数据盘脚本                              
#编写时间:2016年8月30日                               
#脚本作者:乐橙运维组                                 
####################################################################################
#!/usr/bin/env python

#载入模块
import os
import time
from subprocess import Popen, PIPE, STDOUT

#判断磁盘是否存在并开始分区
def fdisk():
        AAA=os.path.exists("/dev/xvdb")
        if AAA == True:
                print "/dev/xvdb存在。"
                print "开始制作分区..."
                time.sleep(5)
                p=Popen(['fdisk', '/dev/xvdb'],stdout=PIPE,stdin=PIPE,stderr=STDOUT)
                output = p.communicate(input="n\np\n1\n\n\np\nw\n")
        else:
                print "/dev/xvdb不存在,程序将退出。"
                exit()
#格式化
def format():
        os.system("mkfs.ext4 /dev/xvdb1")
#挂载
def mountopt():
        name = input('请输入您要挂载的目录,如"/mnt:"')
        os.environ['name'] = str(name)
        os.system("mount /dev/xvdb1 $name")
        print "/dev/xvdb1 已经挂载到"+str(name)+"下!"
        os.system("--------------为您显示df -h的结果----------------")
        os.system("df -h")
        
if __name__ == '__main__':
        fdisk()
        format()
        mountopt()
print "整个脚本已经执行完毕,感谢您的使用,下面请根据不同的需求选择下一步P2P的脚本"


这个脚本是面向阿里云的,阿里云初始状态的数据盘就叫/dev/xvdb,金山云好像叫/dev/vdb/,这里可以手动更改。


新的知识点!

由于#fdisk /dev/xvdb这个分区命令需要一次性返回六个值作为交互,所以不能使用传统的方式,这里使用了Popen,话说python的强大和全能在popen这里得到了体现,python果然非常的叼爆。


popen的几个说明文档:Interactive input/output using python
Python subprocess and user interaction
Python - How do I pass a string into subprocess.Popen (using the stdin argument)?


补充一下,如果要是仅仅是一个值的交互,比如说需要多次回车确认:

#echo -e "\n" | ./build-key-server 或者  #echo y | rm file就可以了,也可以把回车神马的写进一个脚本,然后调用这个脚本。

#!/bin/bash

fdisk /dev/xvdb << End

n

p

1



p

w

End


这个就是shell下一次性执行fdisk /dev/xvdb的脚本。


在下面涉及到了python的变量与shell变量的统一,所以使用了

os.environ['name'] = str(name)

把name这个变量在两个程序之间传递了一下。



其实这种自动挂载的脚本很多,但是很多都是用shell写的,估计除了我们这个变态主管之外,没人会硬性要求用python写这玩意。