王朝网络
分享
 
 
 

自动分区、格式化、挂载脚本

王朝学院·作者佚名  2016-08-27  
宽屏版  字体: |||超大  

功能:自动检测是否有尚未分区的数据盘,格式化新的数据盘并自动挂载

解决了什么问题:一键式检测是否有尚未分区的数据盘,并能对其格式化和自动挂载,省去了复杂的命令和步骤

执行方法:以root身份执行命令

wget http://mirrors.linuxeye.com/scripts/auto_fdisk.sh

chmod +x auto_fdisk.sh

./auto_fdisk.sh

结果:出现如下即自动分区、格式化、挂载成功:

脚本内容如下:

#!/bin/bash

# Author: yeho <lj2007331 ATGmail.com>

# BLOG: https://blog.linuxeye.com

#

# Notes: OneinStack for CentOS/RadHat 5+ Debian 6+ andUbuntu12+

#

#PRoject home page:

# http://oneinstack.com

# https://github.com/lj2007331/oneinstack

export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

clear

printf "

#######################################################################

# OneinStack for CentOS/RadHat 5+ Debian 6+ and Ubuntu 12+ #

# Auto fdisk #

# For more information please visit http://oneinstack.com #

#######################################################################

"

echo=echo

for cmd in echo /bin/echo; do

$cmd >/dev/null 2>&1 || continue

if ! $cmd -e "" | grep -qE '^-e'; then

echo=$cmd

break

fi

done

CSI=$($echo -e "\033[")

CEND="${CSI}0m"

CDGREEN="${CSI}32m"

CRED="${CSI}1;31m"

CGREEN="${CSI}1;32m"

CYELLOW="${CSI}1;33m"

CBLUE="${CSI}1;34m"

CMAGENTA="${CSI}1;35m"

CCYAN="${CSI}1;36m"

CSUCCESS="$CDGREEN"

CFAILURE="$CRED"

CQUESTION="$CMAGENTA"

CWARNING="$CYELLOW"

CMSG="$CCYAN"

# Check if user is root

[ $(id -u) != "0" ] && { echo "${CFAILURE}Error: You must be root to run this script${CEND}"; exit 1; }

MOUNT_DIR=/data

FSTAB_FILE=/etc/fstab

count=0

TMP1=/tmp/.tmp1

TMP2=/tmp/.tmp2

> $TMP1

> $TMP2

# check lock file, one time only let the script run one time

LOCKfile=/tmp/.$(basename $0)

if [ -f "$LOCKfile" ];then

echo

echo "${CWARNING}The script is already exist, please next time to run this script${CEND}"

echo

exit

else

echo

echo "${CMSG}Step 1.No lock file, begin to create lock file and continue${CEND}"

echo

touch $LOCKfile

fi

# check disk partition

check_disk() {

> $LOCKfile

for i in `fdisk -l | grep "Disk" | grep "/dev" | awk '{print $2}' | awk -F: '{print $1}' | grep "vd"`

do

DEVICE_COUNT=$(fdisk -l $i | grep "$i" | awk '{print $2}' | awk -F: '{print $1}' | wc -l)

NEW_MOUNT=$(df -h)

if [ $DEVICE_COUNT -lt 2 ];then

if [ -n "$(echo $NEW_MOUNT | grep -w "$i")" -o "$(grep -v '^#' $FSTAB_FILE | grep -v ^$ | awk '{print $1,$2,$3}' | grep -w "$i" | awk '{print $2}')" == '/' -o "$(grep -v '^#' $FSTAB_FILE | grep -v ^$ | awk '{print $1,$2,$3}' | grep -w "$i" | awk '{print $3}')" == 'swap' ];then

echo "${CWARNING}The $i disk is mounted${CEND}"

else

echo $i >> $LOCKfile

echo "You have a free disk, Now will fdisk it and mount it"

fi

fi

done

DISK_LIST=$(cat $LOCKfile)

if [ "X$DISK_LIST" == "X" ];then

echo

echo "${CWARNING}No free disk need to be fdisk. Exit script${CEND}"

echo

rm -rf $LOCKfile

exit 0

else

echo "${CMSG}This system have free disk :${CEND}"

for i in `echo $DISK_LIST`

do

echo "$i"

count=$((count+1))

done

[ $count -gt 1 ] && { echo "${CWARNING}This system has at least two free disk, You must manually mount it${CEND}"; exit 0; }

fi

}

# check os

check_os() {

os_release=$(grep "Aliyun Linux release" /etc/issue 2>/dev/null)

os_release_2=$(grep "Aliyun Linux release" /etc/aliyun-release 2>/dev/null)

if [ "$os_release" ] && [ "$os_release_2" ];then

if echo "$os_release" | grep "release 5" >/dev/null 2>&1;then

os_release=aliyun5

modify_env

fi

fi

}

# install ext4

modify_env() {

modprobe ext4

yum -y install e4fsprogs

}

# fdisk ,formating and create the file system

fdisk_fun() {

fdisk -S 56 $1 << EOF

n

p

1

wq

EOF

sleep 5

mkfs.ext4 ${1}1

}

# make directory

make_dir() {

echo "${CMSG}Step 4.Begin to make directory${CEND}"

[ -d "$MOUNT_DIR" ] && mv ${MOUNT_DIR}{,_bk}

mkdir -p $MOUNT_DIR

echo "$MOUNT_DIR" >> $TMP1

}

# config /etc/fstab and mount device

main() {

for i in `echo $DISK_LIST`

do

echo

echo "${CMSG}Step 3.Begin to fdisk free disk${CEND}"

[ -n "`df -h | grep ${i}1`" ] && { echo "${CFAILURE}The ${i}1 already mount${CEND}"; echo; exit 0; }

fdisk_fun $i > /dev/null 2>&1

echo

echo "${i}1" >> $TMP2

done

make_dir

> $LOCKfile

paste $TMP2 $TMP1 > $LOCKfile

echo

echo "${CMSG}Step 5.Begin to write configuration to /etc/fstab and mount device${CEND}"

while read a b

do

[ -z "`grep ^${a} $FSTAB_FILE`" -a -z "`grep ${b} $FSTAB_FILE`" ] && echo "${a}$bext4defaults0 0" >> $FSTAB_FILE

done < $LOCKfile

mount -a

echo

}

# start script

echo "${CMSG}Step 2.Begin to check free disk${CEND}"

#serviceMySQLd stop

#mv /data /root

check_os

check_disk

main

df -h

#mv /root/data/* /data

#service mysqld start

rm -rf $LOCKfile $TMP1 $TMP2

原文:https://blog.linuxeye.com/433.html

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有