本脚本是2.6.6环境下使用的~
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
|
####################################################################################
#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变量的统一,所以使用了
1
|
os.environ[
'name'
]
=
str
(name)
|
把name这个变量在两个程序之间传递了一下。
其实这种自动挂载的脚本很多,但是很多都是用shell写的,估计除了我们这个变态主管之外,没人会硬性要求用python写这玩意。