宝塔面板centos安装脚本解读

管理员
管理员
管理员
60
文章
1
评论
2019年8月24日09:55:01 评论 104
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
LANG=en_US.UTF-8
is64bit=`getconf LONG_BIT`
if [ -f "/usr/bin/apt-get" ];then
    isDebian=`cat /etc/issue|grep Debian`
    if [ "$isDebian" != "" ];then
        wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh
        exit;
    else
        wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh
        exit;
    fi
fi
if [ "$is64bit" != '64' ];then
    echo "====================================="
    echo "抱歉, 6.0不支持32位系统, 请使用64位系统或安装宝塔5.9!";
    exit 0;
fi
py26=$(python -V 2>&1|grep '2.6.')
if [ "$py26" != "" ];then
    echo "====================================="
    echo "抱歉, 6.0不支持Centos6.x,请安装Centos7或安装宝塔5.9";
    exit 0;
fi
CN='http://125.88.182.172:5880'
Install_Check(){
    while [ "$yes" != 'yes' ] && [ "$yes" != 'n' ]
    do
        echo -e "----------------------------------------------------"
        echo -e "已有Web环境,安装宝塔可能影响现有站点"
        echo -e "Web service is alreday installed,Can't install panel"
        echo -e "----------------------------------------------------"
        read -p "输入yes强制安装/Enter yes to force installation (yes/n): " yes;
    done
    if [ "$yes" == 'n' ];then
        exit;
    fi
}
Web_Service_Check(){
    if [ -f "/etc/init.d/nginx" ]; then
nginxV=$(cat /etc/init.d/nginx|grep /www/server/nginx)
if [ "${nginxV}"="" ];then
    Install_Check
fi
fi
if [ -f"/etc/init.d/httpd" ];then
httpdV=$(cat /etc/init.d/httpd|grep /www/server/apache)
if [ "${httpdV}"="" ];then
    Install_Check
fi
fi
if [ -f"/etc/init.d/mysqld" ];then
mysqlV=$(cat /etc/init.d/mysqld|grep /www/server/mysql)
if [ "${mysqlV}"="" ];then
    Install_Check
fi
fi
}
Web_Service_Check
echo "
+----------------------------------------------------------------------
| Bt-WebPanel 6.0 FOR CentOS
+----------------------------------------------------------------------
| Copyright © 2015-2099 BT-SOFT(http://www.bt.cn) All rights reserved.
+----------------------------------------------------------------------
| The WebPanel URL will be http://SERVER_IP:8888 when installed.
+----------------------------------------------------------------------
"
get_node_url(){
    nodes=(http://183.235.223.101:3389 http://119.188.210.21:5880 http://125.88.182.172:5880 http://103.224.251.67 http://45.32.116.160 http://download.bt.cn);
    i=1;
    if [ ! -f /bin/curl ];then
        if [ -f /usr/local/curl/bin/curl ];then
            ln -sf /usr/local/curl/bin/curl /bin/curl
        else
            yum install curl -y
        fi
    fi
    for node in ${nodes[@]};
    do
        start=`date +%s.%N`
        result=`curl -sS --connect-timeout 3 -m 60 $node/check.txt`
        if [ $result = 'True' ];then
            end=`date +%s.%N`
            start_s=`echo $start | cut -d '.' -f 1`
            start_ns=`echo $start | cut -d '.' -f 2`
            end_s=`echo $end | cut -d '.' -f 1`
            end_ns=`echo $end | cut -d '.' -f 2`
            time_micro=$(( (10#$end_s-10#$start_s)*1000000 + (10#$end_ns/1000 - 10#$start_ns/1000) ))
            time_ms=$(($time_micro/1000))
            values[$i]=$time_ms;
            urls[$time_ms]=$node
            i=$(($i+1))
        fi
    done
    j=5000
    for n in ${values[@]};
    do
        if [ $j -gt $n ];then
            j=$n
        fi
    done
    if [ $j = 5000 ];then
        NODE_URL='http://download.bt.cn';
    else
        NODE_URL=${urls[$j]}
    fi
}
echo '---------------------------------------------';
echo "Selected download node...";
get_node_url
download_Url=$NODE_URL
echo "Download node: $download_Url";
echo '---------------------------------------------';
setup_path=/www
port='8888'
if [ -f $setup_path/server/panel/data/port.pl ];then
    port=`cat $setup_path/server/panel/data/port.pl`
fi
while [ "$go" != 'y' ] && [ "$go" != 'n' ]
do
    read -p "Do you want to install Bt-Panel to the $setup_path directory now?(y/n): " go;
done
if [ "$go" == 'n' ];then
    exit;
fi
path=/etc/yum.conf
isExc=`cat $path|grep httpd`
if [ "$isExc" = "" ];then
echo"exclude=httpd nginx php mysql mairadb python-psutil python2-psutil">>$path
fi
#自动挂载Swap
autoSwap()
{
    swap=`free |grep Swap|awk '{print $2}'`
    if [ $swap -gt 1 ];then
echo"Swap total sizse: $swap";
        return;
    fi
    if [ ! -d /www ];then
        mkdir /www
    fi
    swapFile='/www/swap'
    dd if=/dev/zero of=$swapFile bs=1M count=1025
    mkswap -f $swapFile
swapon $swapFile
echo"$swapFile swap swap defaults 0 0">> /etc/fstab
    swap=`free |grep Swap|awk '{print $2}'`
    if [ $swap -gt 1 ];then
echo"Swap total sizse: $swap";
        return;
    fi
    sed -i "/\/www\/swap/d" /etc/fstab
    rm -f $swapFile
}
autoSwap
#判断kernel-headers组件是否安装
rpm -qa | grep kernel-headers > kernel-headers.pl
kernelStatus=`cat kernel-headers.pl`
#判断华为云
huaweiLogin=`cat /etc/motd |grep 4000-955-988`
huaweiSys=`cat /etc/redhat-release | grep ' 7.'`
if [ "$kernelStatus" = "" ]; then
    if [ "$huaweiLogin" != "" ] && [ "$huaweiSys" != "" ]; then
        wget $download_Url/src/kernel-headers-3.10.0-514.el7.x86_64.rpm
        rpm -ivh kernel-headers-3.10.0-514.el7.x86_64.rpm
        rm -f kernel-headers-3.10.0-514.el7.x86_64.rpm
    else
        yum install kernel-headers -y
    fi
fi
rm -f kernel-headers.pl
yum install ntp -y
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#尝试同步时间(从bt.cn)
echo 'Synchronizing system time...'
v1=$(curl -sS --connect-timeout 10 -m 3 http://www.bt.cn/api/index/get_time)
if [ "$v1" != "" ];then
    date -s "$(date -d @$v1 +"%Y-%m-%d %H:%M:%S")"
fi
#尝试同步国际时间(从ntp服务器)
ntpdate 0.asia.pool.ntp.org
startTime=`date +%s`
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
for pace in python-devel python-imaging zip unzip openssl openssl-devel gcc libxml2 libxml2-devel libxslt* zlib zlib-devel libjpeg-devel libpng-devel libwebp libwebp-devel freetype freetype-devel lsof pcre pcre-devel vixie-cron crontabs icu libicu-devel c-ares;
do
    yum -y install ${pace};
done
if [ -f "/usr/bin/dnf" ]; then
    dnf install -y redhat-rpm-config
fi
yum install python-devel -y
py26=$(python -V 2>&1|grep '2.6.')
if [ "$py26" != "" ];then
    if [ ! -f /etc/yum.repos.d/epel.repo ];then
        wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    fi
if [ !-f /usr/bin/python3 ];then
        yum install python34 python34-devel -y
        if [ ! -f /usr/bin/python3 ];then
            echo "python3.4 install error!"
            exit 0;
        fi
        isSed=$(cat /usr/bin/yum|grep /usr/bin/python2.6)
        if [ "$isSed" == "" ];then
            sed -i "s#/usr/bin/python#/usr/bin/python2.6#" /usr/bin/yum
        fi
        #rm -f /usr/bin/python2
        mv -f /usr/bin/python /usr/bin/python2_backup
        ln -sf /usr/bin/python3 /usr/bin/python
    fi
    if [ ! -f /usr/bin/pip3 ];then
        wget --no-check-certificate https://bootstrap.pypa.io/get-pip.py
        python3 get-pip.py
        mv -f /usr/bin/pip /usr/bin/pip_backup
        ln -sf /usr/bin/pip3.4 /usr/bin/pip
    fi
fi
tmp=`python -V 2>&1|awk '{print $2}'`
pVersion=${tmp:0:3}
Install_setuptools()
{
    if [ ! -f "/usr/bin/easy_install" ];then
        wget -O setuptools-33.1.1.zip $download_Url/install/src/setuptools-33.1.1.zip -T 10
        unzip setuptools-33.1.1.zip
        rm -f setuptools-33.1.1.zip
        cd setuptools-33.1.1
        python setup.py install
        cd ..
        rm -rf setuptools-33.1.1
    fi
    if [ ! -f "/usr/bin/easy_install" ];then
        echo '=================================================';
        echo -e "\033[31msetuptools installation failed. \033[0m";
        exit;
    fi
}
Install_pip()
{
    ispip=`pip -V |grep from`
    if [ "$ispip" == "" ];then
        if [ ! -f "/usr/bin/easy_install" ];then
            Install_setuptools
        fi
        wget -O pip-9.0.1.tar.gz $download_Url/install/src/pip-9.0.1.tar.gz -T 10
        tar xvf pip-9.0.1.tar.gz
        rm -f pip-9.0.1.tar.gz
        cd pip-9.0.1
        python setup.py install
        cd ..
        rm -rf pip-9.0.1
    fi
    ispip=`pip -V |grep from`
    if [ "$ispip" = "" ];then
        echo '=================================================';
        echo -e "\033[31m Python-pip installation failed. \033[0m";
        exit;
    fi
    pip install -U pip
}
Install_Pillow()
{
    isSetup=`python -m PIL 2>&1|grep package`
    if [ "$isSetup" = "" ];then
        isFedora = `cat /etc/redhat-release |grep Fedora`
        if [ "$isFedora" != "" ];then
            pip install Pillow
            return;
        fi
        wget -O Pillow-3.2.0.zip $download_Url/install/src/Pillow-3.2.0.zip -T 10
        unzip Pillow-3.2.0.zip
        rm -f Pillow-3.2.0.zip
        cd Pillow-3.2.0
        python setup.py install
        cd ..
        rm -rf Pillow-3.2.0
    fi
    isSetup=`python -m PIL 2>&1|grep package`
    if [ "$isSetup" = "" ];then
        echo '=================================================';
        echo -e "\033[31mPillow installation failed. \033[0m";
        exit;
    fi
}
Install_psutil()
{
    isSetup=`python -m psutil 2>&1|grep package`
    if [ "$isSetup" = "" ];then
        wget -O psutil-5.2.2.tar.gz $download_Url/install/src/psutil-5.2.2.tar.gz -T 10
        tar xvf psutil-5.2.2.tar.gz
        rm -f psutil-5.2.2.tar.gz
        cd psutil-5.2.2
        python setup.py install
        cd ..
        rm -rf psutil-5.2.2
    fi
    isSetup=`python -m psutil 2>&1|grep package`
    if [ "$isSetup" = "" ];then
        echo '=================================================';
        echo -e "\033[31mpsutil installation failed. \033[0m";
        exit;
    fi
}
Install_mysqldb()
{
    isSetup=`python -m MySQLdb 2>&1|grep package`
    if [ "$isSetup" = "" ];then
        wget -O MySQL-python-1.2.5.zip $download_Url/install/src/MySQL-python-1.2.5.zip -T 10
        unzip MySQL-python-1.2.5.zip
        rm -f MySQL-python-1.2.5.zip
        cd MySQL-python-1.2.5
        python setup.py install
        cd ..
        rm -rf MySQL-python-1.2.5
    fi
}
Install_chardet()
{
    isSetup=`python -m chardet 2>&1|grep package`
    if [ "$isSetup" = "" ];then
        wget -O chardet-2.3.0.tar.gz $download_Url/install/src/chardet-2.3.0.tar.gz -T 10
        tar xvf chardet-2.3.0.tar.gz
        rm -f chardet-2.3.0.tar.gz
        cd chardet-2.3.0
        python setup.py install
        cd ..
        rm -rf chardet-2.3.0
    fi
    isSetup=`python -m chardet 2>&1|grep package`
    if [ "$isSetup" = "" ];then
        echo '=================================================';
        echo -e "\033[31mchardet installation failed. \033[0m";
        exit;
    fi
}
Install_webpy()
{
    isSetup=`python -m web 2>&1|grep package`
    if [ "$isSetup" = "" ];then
        wget -O web.py-0.38.tar.gz $download_Url/install/src/web.py-0.38.tar.gz -T 10
        tar xvf web.py-0.38.tar.gz
        rm -f web.py-0.38.tar.gz
        cd web.py-0.38
        python setup.py install
        cd ..
        rm -rf web.py-0.38
    fi
    isSetup=`python -m web 2>&1|grep package`
    if [ "$isSetup" = "" ];then
        echo '=================================================';
        echo -e "\033[31mweb.py installation failed. \033[0m";
        exit;
    fi
}
Install_setuptools
Install_pip
curl -Ss --connect-timeout 3 -m 60 http://download.bt.cn/install/pip_select.sh|bash
isPsutil=`python -m psutil 2>&1|grep package`
if [ "$isPsutil" != "" ];then
    psutil_version=`python -c 'import psutil;print psutil.__version__;' |grep '5.'`
    if [ "$psutil_version" = '' ];then
        pip uninstall psutil -y
    fi
fi
yum install libffi-devel -y
pip install --upgrade setuptools
pip install -U pip
pip install six --upgrade --ignore-installed six
pip install itsdangerous==0.24
pip install paramiko==2.0.2
pip install python-socketio -I
pip install flask-socketio
pip install Werkzeug==0.15.1
pip install Pillow==5.4.1
pip install requests -I --user
pip install cffi==1.12.3 -I
pip install cryptography
pip install gunicorn==19
for p_name in psutil chardet virtualenv Flask Flask-Session Flask-SocketIO flask-sqlalchemy Pillow gunicorn gevent-websocket cryptography pyopenssl;
do
    pip install ${p_name}
done
is_gevent=$(pip list|grep gevent)
if [ "$is_gevent" = "" ];then
    if [ -f /usr/bin/yum ];then
        yum install python-gevent -y
    else
        apt install python-gevent -y
    fi
fi
pip install psutil chardet virtualenv Flask Flask-Session Flask-SocketIO flask-sqlalchemy Pillow gunicorn gevent-websocket paramiko requests cryptography pyopenssl
Install_Pillow
Install_psutil
pip install gunicorn
if [ -f /www/server/mysql/bin/mysql ]; then
    pip install mysql-python
    Install_mysqldb
fi
Install_chardet
mkdir -p $setup_path/server/panel/logs
mkdir -p $setup_path/server/panel/vhost/apache
mkdir -p $setup_path/server/panel/vhost/nginx
mkdir -p $setup_path/server/panel/vhost/rewrite
if [ -f '/etc/init.d/bt' ];then
    /etc/init.d/bt stop
fi
mkdir -p /www/server
mkdir -p /www/wwwroot
mkdir -p /www/wwwlogs
mkdir -p /www/backup/database
mkdir -p /www/backup/site
chmod 755 /www/wwwroot
if [ ! -f "/usr/bin/unzip" ];then
    #rm -f /etc/yum.repos.d/epel.repo
    yum install unzip -y
fi
wget -O panel.zip $download_Url/install/src/panel6.zip -T 10
wget -O /etc/init.d/bt $download_Url/install/src/bt6.init -T 10
if [ -f "$setup_path/server/panel/data/default.db" ];then
    if [ -d "/$setup_path/server/panel/old_data" ];then
        rm -rf $setup_path/server/panel/old_data
    fi
    mkdir -p $setup_path/server/panel/old_data
    mv -f $setup_path/server/panel/data/default.db $setup_path/server/panel/old_data/default.db
    mv -f $setup_path/server/panel/data/system.db $setup_path/server/panel/old_data/system.db
    mv -f $setup_path/server/panel/data/port.pl $setup_path/server/panel/old_data/port.pl
    mv -f $setup_path/server/panel/data/admin_path.pl $setup_path/server/panel/old_data/admin_path.pl
fi
unzip -o panel.zip -d $setup_path/server/ > /dev/null
if [ -d "$setup_path/server/panel/old_data" ];then
    mv -f $setup_path/server/panel/old_data/default.db $setup_path/server/panel/data/default.db
    mv -f $setup_path/server/panel/old_data/system.db $setup_path/server/panel/data/system.db
    mv -f $setup_path/server/panel/old_data/port.pl $setup_path/server/panel/data/port.pl
    mv -f $setup_path/server/panel/old_data/admin_path.pl $setup_path/server/panel/data/admin_path.pl
    if [ -d "/$setup_path/server/panel/old_data" ];then
        rm -rf $setup_path/server/panel/old_data
    fi
fi
rm -f panel.zip
if [ ! -f $setup_path/server/panel/tools.py ];then
    echo -e "\033[31mERROR: Failed to download, please try again!\033[0m";
    echo '============================================'
    exit;
fi
rm -f $setup_path/server/panel/class/*.pyc
rm -f $setup_path/server/panel/*.pyc
chmod +x /etc/init.d/bt
chkconfig --add bt
chkconfig --level 2345 bt on
chmod -R 600 $setup_path/server/panel
chmod -R +x $setup_path/server/panel/script
ln -sf /etc/init.d/bt /usr/bin/bt
echo "$port" > $setup_path/server/panel/data/port.pl
/etc/init.d/bt start
password=`cat /dev/urandom | head -n 16 | md5sum | head -c 8`
sleep 1
admin_auth='/www/server/panel/data/admin_path.pl'
if [ ! -f $admin_auth ];then
    auth_path=`cat /dev/urandom | head -n 16 | md5sum | head -c 8`
    echo "/$auth_path" > $admin_auth
fi
auth_path=`cat $admin_auth`
cd $setup_path/server/panel/
python -m py_compile tools.py
python tools.py username
username=`python tools.py panel $password`
cd ~
echo "$password" > $setup_path/server/panel/default.pl
chmod 600 $setup_path/server/panel/default.pl
/etc/init.d/bt restart
sleep 3
isStart=`ps aux |grep 'gunicorn'|grep -v grep|awk '{print $2}'`
if [ "$isStart" == '' ];then
    echo -e "\033[31mERROR: The BT-Panel service startup failed.\033[0m";
    echo '============================================'
    exit;
fi
if [ -f "/etc/init.d/iptables" ];then
    sshPort=`cat /etc/ssh/sshd_config | grep 'Port ' | grep -oE [0-9] | tr -d '\n'`
    if [ "${sshPort}" != "22" ]; then
        iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport $sshPort -j ACCEPT
    fi
    iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT
    iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
    iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
    iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
    iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport $port -j ACCEPT
    iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 39000:40000 -j ACCEPT
    #iptables -I INPUT -p tcp -m state --state NEW -m udp --dport 39000:40000 -j ACCEPT
    iptables -A INPUT -p icmp --icmp-type any -j ACCEPT
    iptables -A INPUT -s localhost -d localhost -j ACCEPT
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -P INPUT DROP
    service iptables save
    sed -i "s#IPTABLES_MODULES=\"\"#IPTABLES_MODULES=\"ip_conntrack_netbios_ns ip_conntrack_ftp ip_nat_ftp\"#" /etc/sysconfig/iptables-config
    iptables_status=`service iptables status | grep 'not running'`
    if [ "${iptables_status}" == '' ];then
        service iptables restart
    fi
fi
if [ "${isVersion}" == '' ];then
    if [ ! -f "/etc/init.d/iptables" ];then
        sshPort=`cat /etc/ssh/sshd_config | grep 'Port ' | grep -oE [0-9] | tr -d '\n'`
        yum install firewalld -y
        systemctl enable firewalld
        systemctl start firewalld
        firewall-cmd --set-default-zone=public > /dev/null 2>&1
        if [ "${sshPort}" != "22" ]; then
            firewall-cmd --permanent --zone=public --add-port=$sshPort/tcp > /dev/null 2>&1
        fi
        firewall-cmd --permanent --zone=public --add-port=20/tcp > /dev/null 2>&1
        firewall-cmd --permanent --zone=public --add-port=21/tcp > /dev/null 2>&1
        firewall-cmd --permanent --zone=public --add-port=22/tcp > /dev/null 2>&1
        firewall-cmd --permanent --zone=public --add-port=80/tcp > /dev/null 2>&1
        firewall-cmd --permanent --zone=public --add-port=$port/tcp > /dev/null 2>&1
        firewall-cmd --permanent --zone=public --add-port=39000-40000/tcp > /dev/null 2>&1
        #firewall-cmd --permanent --zone=public --add-port=39000-40000/udp > /dev/null 2>&1
        firewall-cmd --reload
    fi
fi
pip install psutil chardet psutil virtualenv cryptography==2.1 > /dev/null 2>&1
if [ ! -d '/etc/letsencrypt' ];then
    yum install epel-release -y
    if [ "${country}" = "CN" ]; then
        isC7=`cat /etc/redhat-release |grep ' 7.'`
        if [ "${isC7}" == "" ];then
            wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
        else
            wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
        fi
    fi
    mkdir -p /var/spool/cron
    if [ ! -f '/var/spool/cron/root' ];then
        echo '' > /var/spool/cron/root
        chmod 600 /var/spool/cron/root
    fi
fi
wget -O acme_install.sh $download_Url/install/acme_install.sh
nohup bash acme_install.sh &> /dev/null &
sleep 1
rm -f acme_install.sh
address=""
address=`curl -sS --connect-timeout 10 -m 60 https://www.bt.cn/Api/getIpAddress`
if [ "$address" == '0.0.0.0' ] || [ "$address" == '' ];then
    isHosts=`cat /etc/hosts|grep 'www.bt.cn'`
    if [ "$isHosts" == '' ];then
        echo "" >> /etc/hosts
        echo "125.88.182.170 www.bt.cn" >> /etc/hosts
        address=`curl -sS --connect-timeout 10 -m 60 https://www.bt.cn/Api/getIpAddress`
        if [ "$address" == '' ];then
            sed -i "/bt.cn/d" /etc/hosts
        fi
    fi
fi
ipCheck=`python -c "import re; print(re.match('^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$','$address'))"`
if [ "$ipCheck" == "None" ];then
    address="SERVER_IP"
fi
if [ "$address" != "SERVER_IP" ];then
    echo "$address" > $setup_path/server/panel/data/iplist.txt
fi
curl -sS --connect-timeout 10 -m 60 https://www.bt.cn/Api/SetupCount?type=Linux\&o=$1 > /dev/null 2>&1
if [ "$1" != "" ];then
    echo $1 > /www/server/panel/data/o.pl
    cd /www/server/panel
    python tools.py o
fi
echo /www > /var/bt_setupPath.conf
/etc/init.d/bt start
echo -e "=================================================================="
echo -e "\033[32mCongratulations! Installed successfully!\033[0m"
echo -e "=================================================================="
echo "Bt-Panel: http://$address:$port$auth_path"
echo -e "username: $username"
echo -e "password: $password"
echo -e "\033[33mWarning:\033[0m"
echo -e "\033[33mIf you cannot access the panel, \033[0m"
echo -e "\033[33mrelease the following port (8888|888|80|443|20|21) in the security group\033[0m"
echo -e "=================================================================="
endTime=`date +%s`
((outTime=($endTime-$startTime)/60))
echo -e "Time consumed:\033[32m $outTime \033[0mMinute!"
rm -f install.sh
weinxin
wireshark中文社区
微信公众号扫一扫
管理员
  • 本文由 发表于 2019年8月24日09:55:01
运维老司机总结:最常用 的150 个命令 Linux

运维老司机总结:最常用 的150 个命令

说到运维大家总是想到的是修网络的,其实就修网络的学问也是很大的,现在来听听一位老运维总结下在运维工程中,常用的150个命令汇总 命令 功能说明 线上查询及帮助命令(2个) man 查看命令帮助,命令的...
山特C1K-3K UPS不间断电源使用注意事项 Linux

山特C1K-3K UPS不间断电源使用注意事项

近日机房突然断电,导致zabbix挂了,然后产品一推麻烦事。所以UPS采购就提上日程了。 服务器不多,总的瓦数也不高,最重要的是机房有点拥挤再加上更大容量的UPS接入电源的线路不是插头,而是接(强电)...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: