天天看點

Linux實戰(12):Centos裝機常用腳本-進階版

#!/bin/bash
#shell菜單示範
function menu()
{
echo -e `date`
cat <<EOF
-----------------------------------
>>>菜單首頁:
`echo -e "\033[35m 1)系統狀态\033[0m"`
`echo -e "\033[35m 2)服務管理\033[0m"`
`echo -e "\033[35m 3)主菜單\033[0m"`
`echo -e "\033[35m Q)退出\033[0m"`
EOF
read -p "請輸入對應序列号:" num1
case $num1 in
    1)
    echo -e "\033[32m >>>系統狀态-> \033[0m"
    system_menu
    ;;
    2)
    echo -e "\033[32m >>>服務管理-> \033[0m"
    server_menu
    ;;
    3)
    echo -e "\033[32m >>>傳回主菜單-> \033[0m"
    menu
    ;;
    Q|q)
    echo -e "\033[32m--------退出--------- \033[0m"
    exit 0
    ;;
    *)
    echo -e "\033[31m err:請輸入正确的編号\033[0m"
    menu
esac
}
function system_menu()
{
cat<<EOF
------------------------
********系統狀态********
------------------------
1)docker 狀态
2)selinux 狀态
3)firewall 狀态
X)傳回上一級目錄
------------------------
EOF
read -p "請輸入編号:" num2
case $num2 in
    1)
    `echo -e "systemctl status docker"`
    system_menu
    ;;
    2)
     `echo -e "getenforce"`
    system_menu
    ;;
    3)
     `echo -e "systemctl status firewalld"`
    system_menu
    ;;
    x|X)
    echo -e "\033[32m---------傳回上一級目錄------->\033[0m"
    menu
    ;;
    *)
    echo -e "請輸入正确編号"
    system_menu
esac
}
function server_menu()
{
cat<<EOF
------------------------
********服務管理********
------------------------
1)開啟服務
2)停止服務
3)更新配置服務
X)傳回上一級目錄
------------------------
EOF
read -p "請輸入編号:" num3
case $num3 in
        1)
        op_menu
        ;;
        2)
        op_menu1
        ;;
        3)
        op_menu2
        ;;        
        x|X)
        echo -e "\033[32m-- -----傳回上一級目錄---------> \033[0m"
        menu
        ;;
        *)
        echo -e "請輸入正确編号"
        system_menu
esac
}

function op_menu()
{
cat<<EOF
------------------------
1)開啟docker服務
2)開啟selinux服務
3)開啟firewall服務
X)傳回上一級目錄
------------------------
EOF
read -p "請輸入編号:" num4
case $num4 in
        1)
    `echo -e "systemctl start docker"`
    op_menu
        ;;
        2)
    echo "注意此操作為臨時開啟,重新開機失效"
    setenforce 1
        op_menu
    ;;
    3)
    `echo -e "systemctl start firewalld"`
        op_menu
        ;;
        x|X)
        echo -e "\033[32m--------傳回上一級目錄------->\033[0m"
        server_menu
        ;;
        *)
        echo -e "請輸入正确編号"
    op_menu
esac
}
function op_menu1()
{
cat<<EOF
------------------------
1)停止docker服務
2)臨時關閉selinux
3)停止firewall服務
X)傳回上一級目錄
------------------------
EOF
read -p "請輸入編号:" num5
case $num5 in
        1)
        `echo -e "systemctl stop docker"`
        op_menu1
        ;;
        2)
        echo "注意此操作為臨時關閉,重新開機失效"
         `echo -e "setenforce 0"`
        op_menu1
        ;;
        3)
        `echo -e "systemctl stop firewalld"`
        op_menu1
        ;;
        x|X)
        echo -e "\033[32m >>>傳回上一級目錄---> \033[0m"
        server_menu
        ;;
        *)
        echo -e "請輸入正确編号"
        op_menu1
esac
}
function op_menu2()
{
cat<<EOF
------------------------
1)更改yum源
2)配置docker加速
3)更新python到3
4) 更新python3後配置
X)傳回上一級目錄
------------------------
EOF
read -p "請輸入編号:" num6
case $num6 in
        1)
        yum install wget -y #先安裝wget指令
        echo "------------------------安裝wget指令------------------------"
        mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
        echo 備份完畢
        releasetmp=`cat /etc/redhat-release | awk '{match($0,"release ")
print substr($0,RSTART+RLENGTH)}' | awk -F '.' '{print $1}'`
        wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-$releasetmp.repo
        if [[ $? -eq 0 ]];then
          echo -e "\033[32m# yum 源已成功更新為 aliyun_repo #\033[0m";
          sleep 3;
        else
          echo -e "\033[31m# yum 源未成功更新為 aliyun_repo #\n3s 後退出...\033[0m";
          exit;
        fi
      yum clean all && yum makecache  && yum -y update
      echo "------------------------更新完畢------------------------"
        op_menu2
        ;;
        2)
        sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://0khgh4v2.mirror.aliyuncs.com"]
}
EOF
        sudo systemctl daemon-reload && sudo systemctl restart docker
      echo "------------------------Docker加速配置完畢------------------------"
        op_menu2
        ;;
        3)
        yum install libffi-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make -y && wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz -O $PWD/Python-3.7.0.tgz && tar -zxvf Python-3.7.0.tgz 
        if [! -d "/usr/local/python3"];then
            mkdir /usr/local/python3 && cd $PWD/Python-3.7.0 &&  ./configure --prefix=/usr/local/python3
            make && make install
                elif [! -d "$PWD/Python-3.7.0.tgz"];then
                    wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz -O $PWD/Python-3.7.0.tgz

        else
            cd $PWD/Python-3.7.0 &&  ./configure --prefix=/usr/local/python3
            make && make install
        fi
        op_menu3
        ;;
        4)
        echo -e "\033[32m >>>進入目錄---> \033[0m"
        op_menu3
        ;;
        x|X)
        echo -e "\033[32m >>>傳回上一級目錄---> \033[0m"
        server_menu
        ;;
        *)
        echo -e "請輸入正确編号"
        op_menu2
esac
}
function op_menu3()
{
cat<<EOF
------------------------
1)配置Python,pip預設
2)配置yum
3)配置防火牆
X)傳回上一級目錄
------------------------
EOF
read -p "請輸入編号:" num7
case $num7 in
        1)
        python2_path=`ls -al /usr/bin | grep -w "python -> python2" | awk '{print $9,$10,$11}' | wc -l`
        #python_path=`ls -l /usr/bin/python* | grep -w "python -> python2" | awk '{print $9}'`       
        if [ x"$python2_path" != x"0" ];then
            echo -e "\033[32m <---------------未修改,現在開始修改預設python,pip--------------> \033[0m"
            mv /usr/bin/python /usr/bin/python.bak && rm -rf /usr/bin/python && rm -rf /usr/bin/pip && ln -s /usr/local/python3/bin/python3 /usr/bin/python  && ln -s /usr/local/python3/bin/pip3  /usr/bin/pip
            echo -e "\033[32m <---------------已更改結束--------------> \033[0m"
            else
                echo -e "\033[32m <---------------已經修改無需配置--------------> \033[0m"
        fi
        op_menu3
        ;;
        2)
        yum_path=`cat /usr/bin/yum | grep -w "/usr/bin/python" | wc -l`
        yum_path1=`cat /usr/libexec/urlgrabber-ext-down | grep -w "/usr/bin/python" | wc -l`
        if [ x"$yum_path" != x"0" ]
        then
            echo -e "\033[32m <---------------修改第一步--------------> \033[0m"
            sed -i "1c #!/usr/bin/python2" /usr/bin/yum
            echo -e "\033[32m <---------------第一步已更改結束--------------> \033[0m"
        else
            echo -e "\033[32m <---------------第一步已改動--------------> \033[0m"
        fi
        if [ x"$yum_path1" != x"0" ]
        then
                echo -e "\033[32m <---------------修改第二步--------------> \033[0m"
                sed -i '1c #!/usr/bin/python2' /usr/libexec/urlgrabber-ext-down
                echo -e "\033[32m <---------------第二步已更改結束--------------> \033[0m"
        else
                echo "------------------------第二步已改動------------------------"
        fi
        op_menu3
        ;;
        3)
        firewall_path=`cat /usr/sbin/firewalld | grep -w "/usr/bin/python" | wc -l`
        if [ x"$firewall_path" != x"0" ];then
            echo -e "\033[32m <---------------未修改,現在開始修改預設firewall--------------> \033[0m"
            sed -i "1c #!/usr/bin/python2" /usr/sbin/firewalld
            echo -e "\033[32m <---------------已更改結束--------------> \033[0m"
        else
            echo -e "\033[32m <---------------已經修改無需配置--------------> \033[0m"
        fi
        op_menu3
        ;;
        x|X)
        echo -e "\033[32m >>>傳回上一級目錄---> \033[0m"
        server_menu
        ;;
        *)
        echo -e "請輸入正确編号"
        op_menu3
esac
}
menu