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

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

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

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

  1. wget http://mirrors.linuxeye.com/scripts/auto_fdisk.sh
  2. chmod +x auto_fdisk.sh
  3. ./auto_fdisk.sh

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

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

脚本内容如下:

  1. #!/bin/bash
  2. # Author:  yeho <lj2007331 AT gmail.com>
  3. # BLOG:  https://linuxeye.com
  4. #
  5. # Notes: OneinStack for CentOS/RadHat 5+ Debian 6+ and Ubuntu 12+
  6. #
  7. # Project home page:
  8. #       http://oneinstack.com
  9. #       https://github.com/lj2007331/oneinstack
  10. export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
  11. clear
  12. printf “
  13. #######################################################################
  14. #       OneinStack for CentOS/RadHat 5+ Debian 6+ and Ubuntu 12+      #
  15. #                             Auto fdisk                              #
  16. #       For more information please visit http://oneinstack.com       #
  17. #######################################################################
  18. echo=echo
  19. for cmd in echo /bin/echo; do
  20.         $cmd >/dev/null 2>&1 || continue
  21.         if ! $cmd -e “” | grep -qE ‘^-e’; then
  22.                 echo=$cmd
  23.                 break
  24.         fi
  25. done
  26. CSI=$($echo -e “\033[“)
  27. CEND=”${CSI}0m”
  28. CDGREEN=”${CSI}32m”
  29. CRED=”${CSI}1;31m”
  30. CGREEN=”${CSI}1;32m”
  31. CYELLOW=”${CSI}1;33m”
  32. CBLUE=”${CSI}1;34m”
  33. CMAGENTA=”${CSI}1;35m”
  34. CCYAN=”${CSI}1;36m”
  35. CSUCCESS=”$CDGREEN”
  36. CFAILURE=”$CRED”
  37. CQUESTION=”$CMAGENTA”
  38. CWARNING=”$CYELLOW”
  39. CMSG=”$CCYAN”
  40. # Check if user is root
  41. [ $(id -u) != “0” ] && { echo “${CFAILURE}Error: You must be root to run this script${CEND}”; exit 1; }
  42. MOUNT_DIR=/data
  43. FSTAB_FILE=/etc/fstab
  44. count=0
  45. TMP1=/tmp/.tmp1
  46. TMP2=/tmp/.tmp2
  47. > $TMP1
  48. > $TMP2
  49. # check lock file, one time only let the script run one time 
  50. LOCKfile=/tmp/.$(basename $0)
  51. if [ -f “$LOCKfile” ];then
  52.     echo
  53.     echo “${CWARNING}The script is already exist, please next time to run this script${CEND}”
  54.     echo
  55.     exit
  56. else
  57.     echo
  58.     echo “${CMSG}Step 1.No lock file, begin to create lock file and continue${CEND}”
  59.     echo
  60.     touch $LOCKfile
  61. fi
  62. # check disk partition
  63. check_disk() {
  64.     > $LOCKfile
  65.     for i in `fdisk -l | grep “Disk” | grep “/dev” | awk ‘{print $2}’ | awk -F: ‘{print $1}’ | grep “vd”`
  66.     do
  67.         DEVICE_COUNT=$(fdisk -l $i | grep “$i” | awk ‘{print $2}’ | awk -F: ‘{print $1}’ | wc -l)
  68.         NEW_MOUNT=$(df -h)
  69.         if [ $DEVICE_COUNT -lt 2 ];then
  70.             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
  71.                 echo “${CWARNING}The $i disk is mounted${CEND}”
  72.             else
  73.                 echo $i >> $LOCKfile
  74.                 echo “You have a free disk, Now will fdisk it and mount it”
  75.             fi
  76.         fi
  77.     done
  78.     DISK_LIST=$(cat $LOCKfile)
  79.     if [ “X$DISK_LIST” == “X” ];then
  80.         echo
  81.         echo “${CWARNING}No free disk need to be fdisk. Exit script${CEND}”
  82.         echo
  83.         rm -rf $LOCKfile
  84.         exit 0
  85.     else
  86.         echo “${CMSG}This system have free disk :${CEND}”
  87.         for i in `echo $DISK_LIST`
  88.         do
  89.             echo “$i”
  90.             count=$((count+1))
  91.         done
  92.         [ $count -gt 1 ] && { echo “${CWARNING}This system has at least two free disk, You must manually mount it${CEND}”; exit 0; }
  93.     fi
  94. }
  95. # check os
  96. check_os() {
  97.     os_release=$(grep “Aliyun Linux release” /etc/issue 2>/dev/null)
  98.     os_release_2=$(grep “Aliyun Linux release” /etc/aliyun-release 2>/dev/null)
  99.     if [ “$os_release” ] && [ “$os_release_2” ];then
  100.         if echo “$os_release” | grep “release 5” >/dev/null 2>&1;then
  101.             os_release=aliyun5
  102.             modify_env
  103.         fi
  104.     fi
  105. }
  106. # install ext4
  107. modify_env() {
  108.     modprobe ext4
  109.     yum -y install e4fsprogs
  110. }
  111. # fdisk ,formating and create the file system
  112. fdisk_fun() {
  113. fdisk -S 56 $1 << EOF
  114. n
  115. p
  116. 1
  117. wq
  118. EOF
  119. sleep 5
  120. mkfs.ext4 ${1}1
  121. }
  122. # make directory
  123. make_dir() {
  124.     echo “${CMSG}Step 4.Begin to make directory${CEND}”
  125.     [ -d “$MOUNT_DIR” ] && mv ${MOUNT_DIR}{,_bk}
  126.     mkdir -p $MOUNT_DIR
  127.     echo “$MOUNT_DIR” >> $TMP1
  128. }
  129. # config /etc/fstab and mount device
  130. main() {
  131.     for i in `echo $DISK_LIST`
  132.     do
  133.         echo
  134.         echo “${CMSG}Step 3.Begin to fdisk free disk${CEND}”
  135.         [ -n “`df -h | grep ${i}1`” ] && { echo “${CFAILURE}The ${i}1 already mount${CEND}”; echo; exit 0; }
  136.         fdisk_fun $i > /dev/null 2>&1
  137.         echo
  138.         echo “${i}1” >> $TMP2
  139.     done
  140.     make_dir
  141.     > $LOCKfile
  142.     paste $TMP2 $TMP1 > $LOCKfile
  143.     echo
  144.     echo “${CMSG}Step 5.Begin to write configuration to /etc/fstab and mount device${CEND}”
  145.     while read a b
  146.     do
  147.         [ -z “`grep ^${a} $FSTAB_FILE`” -a -z “`grep ${b} $FSTAB_FILE`” ] && echo “${a} $b      ext4    defaults      0 0” >> $FSTAB_FILE
  148.     done < $LOCKfile
  149.     mount -a
  150.     echo
  151. }
  152. # start script
  153. echo “${CMSG}Step 2.Begin to check free disk${CEND}”
  154. #service mysqld stop
  155. #mv /data /root
  156. check_os
  157. check_disk
  158. main
  159. df -h
  160. #mv /root/data/* /data
  161. #service mysqld start
  162. rm -rf $LOCKfile $TMP1 $TMP2

参考:http://help.aliyun.com/knowledge_detail/6689611.html

Wed Nov 11 10:54:41 CST 2015

【AD】美国洛杉矶CN2 VPS/香港CN2 VPS/日本CN2 VPS推荐,延迟低、稳定性高、免费备份_搬瓦工vps

【AD】RackNerd 推出的 KVM VPS 特价优惠,在纽约、西雅图、圣何塞和阿什本每年仅需 12.88 美元!