西部数码硬盘扩容脚本.

#! /bin/bash
#by 2016/1/26
#v2改进:
#(1)gbk和utf8自适应,不会乱码
#(2)判断如果是ubuntu跳过启动/停止wdcp常用服务
#v3改进:
#兼容centos7

#功能:输出中文自适应编码,防止乱码
#前提:本shell文件必须以utf8编码的形式存储
#使用:#myi18n "中文字符"
myi18n()
{
        if [[ "$#" -ne 1 ]]
        then
                echo "demo: myi18n infotest"
        fi


        if [[ $LANG =~ [Uu][Tt][Ff] ]]  #如果系统是utf8编码
        then
                echo "$1" 
        else    #如果系统是gbk编码
                echo "$1" | iconv -f utf-8 -t gbk
        fi
}

#系统类型
isUbuntu=`uname -a |grep -iq "ubuntu" && echo "yes" || echo "no"`
isel7=`uname -a |grep -iq "el7" && echo "yes" || echo "no"`
#取得home分区的设备名
home_part=`df -vh |grep "www" | awk '{print $1}'`       #结果是类似于/dev/vdb1
home_dev=`echo $home_part  | sed  's/[0-9]$//'`                 #结果是类似于/dev/vdb

#停止wdcp常用服务
function stopsv(){
service httpd stop
service wdapache stop
service mysqld stop
}
#启动wdcp常用服务
function startsv(){
        service mysqld start
        service httpd start
        service wdapache start
        /www/wdlinux/nginx-1.0.12/sbin/nginx -s stop
        /www/wdlinux/nginx-1.0.12/sbin/nginx
}

#如果不是ubuntu,停止wdcp常用服务
if [[ $isUbuntu == "no" && $isel7 == "no" ]] 
        then
        stopsv
fi
#安装fuser

if ! which fuser > /dev/null
then
        if [[ $isUbuntu == "yes"  ]];then
                apt-get -y  install fuser
        elif [[ $isel7 == "yes" ]];then
                yum -y install psmisc
        else 
                yum -y install fuser
        fi
fi
#取消挂载home分区


fuser -m /www -k
umount /www
if [[ $? -ne 0  ]]      #如果不能直接取消挂载 或 不存在/home分区
then
                echo;echo;
                myi18n "取消/home挂载失败,程序自动退出,请手动操作扩展"
                exit 1
fi

#安装parted
if ! which parted > /dev/null
then
        if [[ $isUbuntu == "yes"  ]] 
        then
                apt-get -y  install parted
        else
                yum -y install parted 
        fi
fi


#备份分区表
parted $home_dev print > /parted.txt
if [[ ! -e /parted.txt ]]
then
  echo;echo;
  myi18n "不能生成分区表备份文件,程序自动退出,请手动操作扩展"
  exit 1
fi

if [[ $isel7 == "yes" ]];then
   if  [[ `cat /parted.txt | wc -l` -ne 9 ]];then
        echo;echo;
        myi18n "分区表备份文件内容异常,程序自动退出,请手动操作扩展!"
        exit 2
   else
   startLOC=`parted $home_dev print | sed -n '8p' | awk '{print $2}'`
   fi
elif [[ `cat /parted.txt | wc -l` -ne 8 ]];then
        echo;echo;
        myi18n "分区表备份文件内容异常,程序自动退出,请手动操作扩展!"
        exit 2
 else
  startLOC=`parted $home_dev print | sed -n '7p' | awk '{print $2}'`
fi

#开始扩展
parted $home_dev  rm 1
yes|parted $home_dev  mkpart p $startLOC 100%
echo;echo;
myi18n "如果硬盘较大,时间可能会很长,请耐心等待!!"
echo;echo;
resize2fs -f $home_part

#重新挂载
mount -a
df -vh
#如果不是ubuntu,启动wdcp常用服务
if [[ $isUbuntu == "no" && $isel7 == "no" ]] 
        then
        startsv
fi
echo;echo;
myi18n "扩展home分区完成"
exit 0

根据扩容挂载路径修改相应配置.

posted @ 2021-04-15 17:22  赵海博运维笔记  阅读(92)  评论(0编辑  收藏  举报