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

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

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

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

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

    Wed Nov 11 10:54:41 CST 2015
    • 本文由 发表于 2015-11-11
    • 转载请务必保留本文链接:https://linuxeye.com/433.html
    Python脚本批量检查SSL证书过期时间 脚本

    Python脚本批量检查SSL证书过期时间

    背景 云平台https的域名服务器如果超过上百条,如果都分布在不同的服务器或者负载均衡上,如果即将过期,做完替换SSL证书动作后,如何批量检查域名的SSL证书是否替换网站,可通过如下脚本实现。 Pyt...
    腾讯云COS上传、批量删除工具(Python) 脚本

    腾讯云COS上传、批量删除工具(Python)

    腾讯云对象存储COS是类似于阿里云OSS,相比OSS,COS提供每月免费额度:存储空间50G、外网访问流量10G(内网免费)、免费读请求100万次、写请求10万次。对网站备份来说不错,但是,腾讯云提供...
    Imagemagick升级脚本-OneinStack 脚本

    Imagemagick升级脚本-OneinStack

    5月3日,图像处理软件ImageMagick就被公布出一个严重的0day漏洞(CVE-2016-3714),攻击者通过此漏洞可执行任意命令,最终窃取重要信息取得服务器控制权。 详细信息参考:https...
    匿名

    发表评论

    匿名网友