欢迎光临
我们一直在努力

Linux VPS一键网络重装纯净版Debian/Ubuntu/CentOS系统脚本

一键网络重装纯净版Debian/Ubuntu/CentOS系统脚本是由@萌咖(MoeClub.org)博主制作的,可以为的Linux系统VPS简单快速的一键网络重装Debian、Ubuntu、CentOS纯净版系统,目前此脚本不支持OpenVZ架构的VPS,全自动安后装默认root密码:Vicer,安装完成后请自行更改密码,关于如何修改密码可以参照高品质美国CN2KiwiVM面板使用教程及如何自定义ROOT密码一文中的高品质美国CN2VPS如何自定义root密码,也可以自行通过搜索引擎找对应方法。另外CentOS系统只支持重装6.x 及以下版本。下面是蜗牛根据萌咖(MoeClub.org)博主文章整理的安装命令,希望对有需要的博友有所帮助。

一、安装所需软件

首先安装所需的软件根据自己本身对应的系统选择对应的命令即可。

#Debian/Ubuntu系统:apt-get install -y xz-utils openssl gawk file #RedHat/CentOS系统:yum install -y xz openssl gawk file

如果报错,那么先运行下面命令

#Debian/Ubuntu系统:apt-get update #RedHat/CentOS系统:yum update

二、下载系统重装脚本

使用下面命令下载自动重装系统脚本。

#萌咖脚本下载地址:wget --no-check-certificate -qO InstallNET.sh \'https://moeclub.org/attachment/LinuxShell/InstallNET.sh\' && chmod a+x InstallNET.sh#蜗牛789备用:wget --no-check-certificate -qO InstallNET.sh \'https://raw.githubusercontent.com/wn789/xitong/master/InstallNET.sh\' && chmod a+x InstallNET.sh

三、系统重装命令

在下面选择将要按的的系统,运行对应命令即可,一般20-30分钟就会安装完成。装默认root密码:Vicer。

安装CentOS 6.8 x32:

bash InstallNET.sh -c 6.8 -v 32 -a

安装CentOS 6.8 x64:

bash InstallNET.sh -c 6.8 -v 64 -a

安装CentOS 6.9 x32:

bash InstallNET.sh -c 6.9 -v 32 -a

安装CentOS 6.9 x64:

bash InstallNET.sh -c 6.9 -v 64 -a

安装Debian 7 x32:

bash InstallNET.sh -d 7 -v 32 -a

安装Debian 8 x64:

bash InstallNET.sh -d 8 -v 64 -a

安装Debian 9 x64:

bash InstallNET.sh -d 9 -v 64 -a

安装Ubuntu 14.04 x64:

bash InstallNET.sh -u trusty -v 64 -a

安装Ubuntu 16.04 x64:

bash InstallNET.sh -u xenial -v 64 -a

安装Ubuntu 18.04 x64:

bash InstallNET.sh -u bionic -v 64 -a

四、安装脚本源码备份

#!/bin/bash ## It can reinstall Debian, Ubuntu, CentOS system with network.## Suitable for using by GRUB.## Default root password: Vicer## Blog: https://moeclub.org## Written By Vicer export tmpVER=\'\'export tmpDIST=\'\'export tmpURL=\'\'export tmpWORD=\'\'export tmpMirror=\'\'export tmpSSL=\'\'export tmpINS=\'\'export tmpFW=\'\'export ipAddr=\'\'export ipMask=\'\'export ipGate=\'\'export linuxdists=\'\'export ddMode=\'0\'export setNet=\'0\'export isMirror=\'0\'export FindDists=\'0\'export SpikCheckDIST=\'0\'export UNKNOWHW=\'0\'export UNVER=\'6.4\' while [[ $# -ge 1 ]]; do  case $1 in    -v|--ver)      shift      tmpVER=\"$1\"      shift      ;;    -d|--debian)      shift      linuxdists=\'debian\'      tmpDIST=\"$1\"      shift      ;;    -u|--ubuntu)      shift      linuxdists=\'ubuntu\'      tmpDIST=\"$1\"      shift      ;;    -c|--centos)      shift      linuxdists=\'centos\'      tmpDIST=\"$1\"      shift      ;;    -dd|--image)      shift      ddMode=\'1\'      tmpURL=\"$1\"      shift      ;;    -p|--password)      shift      tmpWORD=\"$1\"      shift      ;;    --ip-addr)      shift      ipAddr=\"$1\"      shift      ;;    --ip-mask)      shift      ipMask=\"$1\"      shift      ;;    --ip-gate)      shift      ipGate=\"$1\"      shift      ;;    -a|--auto)      shift      tmpINS=\'auto\'      ;;    -m|--manual)      shift      tmpINS=\'manual\'      ;;    -apt|-yum|--mirror)      shift      isMirror=\'1\'      tmpMirror=\"$1\"      shift      ;;    -ssl)      shift      tmpSSL=\"$1\"      shift      ;;    --firmware)      shift      tmpFW=\'1\'      ;;    *)      if [[ \"$1\" != \'error\' ]]; then echo -ne \"\\nInvaild option: \'$1\'\\n\\n\"; fi      echo -ne \" Usage:\\n\\tbash DebianNET.sh\\t-d/--debian [\\033[33m\\033[04mdists-name\\033[0m]\\n\\t\\t\\t\\t-u/--ubuntu [\\033[04mdists-name\\033[0m]\\n\\t\\t\\t\\t-c/--centos [\\033[33m\\033[04mdists-verison\\033[0m]\\n\\t\\t\\t\\t-v/--ver [32/\\033[33m\\033[04mi386\\033[0m|64/amd64]\\n\\t\\t\\t\\t--ip-addr/--ip-gate/--ip-mask\\n\\t\\t\\t\\t-apt/-yum/--mirror\\n\\t\\t\\t\\t-dd/--image\\n\\t\\t\\t\\t-a/--auto\\n\\t\\t\\t\\t-m/--manual\\n\"      exit 1;      ;;    esac  done [[ \"$EUID\" -ne \'0\' ]] && echo \"Error:This script must be run as root!\" && exit 1; function CheckDependence(){FullDependence=\'0\';for BIN_DEP in `echo \"$1\" |sed \'s/,/\\n/g\'`  do    if [[ -n \"$BIN_DEP\" ]]; then      Founded=\'0\';      for BIN_PATH in `echo \"$PATH\" |sed \'s/:/\\n/g\'`        do          ls $BIN_PATH/$BIN_DEP >/dev/null 2>&1;          if [ $? == \'0\' ]; then            Founded=\'1\';            break;          fi        done      if [ \"$Founded\" == \'1\' ]; then        echo -en \"[\\033[32mok\\033[0m]\\t\";      else        FullDependence=\'1\';        echo -en \"[\\033[31mNot Install\\033[0m]\";      fi      echo -en \"\\t$BIN_DEP\\n\";    fi  doneif [ \"$FullDependence\" == \'1\' ]; then  echo -ne \"\\n\\033[31mError! \\033[0mPlease use \'\\033[33mapt-get\\033[0m\' or \'\\033[33myum\\033[0m\' install it.\\n\\n\\n\"  exit 1;fi} if [[ -z \"$linuxdists\" ]]; then  linuxdists=\'debian\';fi clear && echo -e \"\\n\\033[36m# Check Dependence\\033[0m\\n\" if [[ \"$ddMode\" == \'1\' ]]; then  CheckDependence iconv;  linuxdists=\'debian\';  tmpDIST=\'jessie\';  tmpVER=\'amd64\';  tmpINS=\'auto\';fi if [[ \"$linuxdists\" == \'debian\' ]] || [[ \"$linuxdists\" == \'ubuntu\' ]]; then  CheckDependence wget,awk,grep,sed,cut,cat,cpio,gzip,find,dirname,basename;elif [[ \"$linuxdists\" == \'centos\' ]]; then  CheckDependence wget,awk,grep,sed,cut,cat,cpio,gzip,find,dirname,basename,file,xz;fi if [[ -n \"$tmpWORD\" ]]; then  CheckDependence openssl;fi [[ -f \'/boot/grub/grub.cfg\' ]] && GRUBOLD=\'0\' && GRUBDIR=\'/boot/grub\' && GRUBFILE=\'grub.cfg\';[[ -z \"$GRUBDIR\" ]] && [[ -f \'/boot/grub2/grub.cfg\' ]] && GRUBOLD=\'0\' && GRUBDIR=\'/boot/grub2\' && GRUBFILE=\'grub.cfg\';[[ -z \"$GRUBDIR\" ]] && [[ -f \'/boot/grub/grub.conf\' ]] && GRUBOLD=\'1\' && GRUBDIR=\'/boot/grub\' && GRUBFILE=\'grub.conf\';[ -z \"$GRUBDIR\" -o -z \"$GRUBFILE\" ] && echo -ne \"Error! \\nNot Found grub path.\\n\" && exit 1; if [[ \"$isMirror\" == \'1\' ]]; then  if [[ -n \"$tmpMirror\" ]]; then    TMPMirrorHost=\"$(echo -n \"$tmpMirror\" |grep -Eo \'.*\\.(\\w+)\')\";    echo \"$TMPMirrorHost\" |grep -q \'://\';    if [[ $? == \'0\' ]]; then      MirrorHost=\"$(echo \"$TMPMirrorHost\" |awk -F\'://\' \'{print $2}\')\";    else      echo -en \"\\n\\033[31mInvaild Mirror! \\033[0m\\n\";      [[ \"$linuxdists\" == \'debian\' ]] && echo -en \"\\033[33mexample:\\033[0m http://httpredir.debian.org/debian\\n\\n\";      [[ \"$linuxdists\" == \'ubuntu\' ]] && echo -en \"\\033[33mexample:\\033[0m http://archive.ubuntu.com/ubuntu\\n\\n\";      [[ \"$linuxdists\" == \'centos\' ]] && echo -en \"\\033[33mexample:\\033[0m http://mirror.centos.org/centos\\n\\n\";      exit 1    fi    if [[ -n \"$MirrorHost\" ]]; then      MirrorFolder=\"$(echo -n \"$tmpMirror\" |awk -F\'\'${MirrorHost}\'\' \'{print $2}\' |sed \'s/\\/$//g\')\";      if [[ -z \"$MirrorFolder\" ]]; then        [[ \"$linuxdists\" == \'debian\' ]] && MirrorFolder=\'/debian\';        [[ \"$linuxdists\" == \'ubuntu\' ]] && MirrorFolder=\'/ubuntu\';        [[ \"$linuxdists\" == \'centos\' ]] && MirrorFolder=\'/centos\';      fi      DISTMirror=\"${MirrorHost}${MirrorFolder}\";    fi  fifi if [[ -z \"$DISTMirror\" ]]; then  [[ \"$linuxdists\" == \'debian\' ]] && MirrorHost=\'httpredir.debian.org\' && MirrorFolder=\'/debian\' && DISTMirror=\"${MirrorHost}${MirrorFolder}\";  [[ \"$linuxdists\" == \'ubuntu\' ]] && MirrorHost=\'archive.ubuntu.com\' && MirrorFolder=\'/ubuntu\' && DISTMirror=\"${MirrorHost}${MirrorFolder}\";  [[ \"$linuxdists\" == \'centos\' ]] && DISTMirror=\'vault.centos.org\';fi if [[ -n \"$tmpVER\" ]]; then  tmpVER=\"$(echo \"$tmpVER\" |sed -r \'s/(.*)/\\L\\1/\')\";  if  [[ \"$tmpVER\" == \'32\' ]] || [[ \"$tmpVER\" == \'i386\' ]] || [[ \"$tmpVER\" == \'x86\' ]]; then    VER=\'i386\';  fi  if  [[ \"$tmpVER\" == \'64\' ]] || [[ \"$tmpVER\" == \'amd64\' ]] || [[ \"$tmpVER\" == \'x86_64\' ]] || [[ \"$tmpVER\" == \'x64\' ]]; then    if [[ \"$linuxdists\" == \'debian\' ]] || [[ \"$linuxdists\" == \'ubuntu\' ]]; then      VER=\'amd64\';    elif [[ \"$linuxdists\" == \'centos\' ]]; then      VER=\'x86_64\';    fi  fifi if [[ -z \"$VER\" ]]; then  VER=\'i386\';fi if [[ -z \"$tmpDIST\" ]]; then  [[ \"$linuxdists\" == \'debian\' ]] && DIST=\'jessie\';  [[ \"$linuxdists\" == \'ubuntu\' ]] && DIST=\'xenial\';  [[ \"$linuxdists\" == \'centos\' ]] && DIST=\'6.8\';fi if [[ -z \"$DIST\" ]]; then  if [[ \"$linuxdists\" == \'debian\' ]]; then    SpikCheckDIST=\'0\'    DIST=\"$(echo \"$tmpDIST\" |sed -r \'s/(.*)/\\L\\1/\')\";    echo \"$DIST\" |grep -q \'[0-9]\';    [[ $? -eq \'0\' ]] && {      isDigital=\"$(echo \"$DIST\" |grep -o \'[\\.0-9]\\{1,\\}\' |sed -n \'1h;1!H;$g;s/\\n//g;$p\' |cut -d\'.\' -f1)\";      [[ -n $isDigital ]] && {        [[ \"$isDigital\" == \'7\' ]] && DIST=\'wheezy\';        [[ \"$isDigital\" == \'8\' ]] && DIST=\'jessie\';        [[ \"$isDigital\" == \'9\' ]] && DIST=\'stretch\';        [[ \"$isDigital\" == \'10\' ]] && DIST=\'buster\';      }    }  fi  if [[ \"$linuxdists\" == \'ubuntu\' ]]; then    SpikCheckDIST=\'0\'    DIST=\"$(echo \"$tmpDIST\" |sed -r \'s/(.*)/\\L\\1/\')\";    echo \"$DIST\" |grep -q \'[0-9]\';    [[ $? -eq \'0\' ]] && {      isDigital=\"$(echo \"$DIST\" |grep -o \'[\\.0-9]\\{1,\\}\' |sed -n \'1h;1!H;$g;s/\\n//g;$p\')\";      [[ -n $isDigital ]] && {        [[ \"$isDigital\" == \'12.04\' ]] && DIST=\'precise\';        [[ \"$isDigital\" == \'14.04\' ]] && DIST=\'trusty\';        [[ \"$isDigital\" == \'16.04\' ]] && DIST=\'xenial\';        [[ \"$isDigital\" == \'18.04\' ]] && DIST=\'bionic\';      }    }  fi  if [[ \"$linuxdists\" == \'centos\' ]]; then    SpikCheckDIST=\'1\'    DISTCheck=\"$(echo \"$tmpDIST\" |grep -o \'[\\.0-9]\\{1,\\}\')\";    ListDIST=\"$(wget --no-check-certificate -qO- \"http://$DISTMirror/dir_sizes\" |cut -f2 |grep \'^[0-9]\')\"    DIST=\"$(echo \"$ListDIST\" |grep \"^$DISTCheck\")\"    [[ -z \"$DIST\" ]] && {      echo -ne \'\\nThe dists version not found in this mirror, Please check it! \\n\\n\'      bash $0 error;      exit 1;    }    wget --no-check-certificate -qO- \"http://$DISTMirror/$DIST/os/$VER/.treeinfo\" |grep -q \'general\';    [[ $? != \'0\' ]] && {      echo -ne \"\\nThe version not found in this mirror, Please change mirror try again! \\n\\n\";      exit 1;    }   fifi if [[ \"$SpikCheckDIST\" == \'0\' ]]; then  DistsList=\"$(wget --no-check-certificate -qO- \"http://$DISTMirror/dists/\" |grep -o \'href=.*/\"\' |cut -d\'\"\' -f2 |sed \'/-\\|old\\|Debian\\|experimental\\|stable\\|test\\|sid\\|devel/d\' |grep \'^[^/]\' |sed -n \'1h;1!H;$g;s/\\n//g;s/\\//\\;/g;$p\')\";  for CheckDEB in `echo \"$DistsList\" |sed \'s/;/\\n/g\'`    do      [[ \"$CheckDEB\" == \"$DIST\" ]] && FindDists=\'1\';      [[ \"$FindDists\" == \'1\' ]] && break;    done  [[ \"$FindDists\" == \'0\' ]] && {    echo -ne \'\\nThe dists version not found, Please check it! \\n\\n\'    bash $0 error;    exit 1;  }fi [[ \"$ddMode\" == \'1\' ]] && {  export SSL_SUPPORT=\'https://moeclub.org/get-wget_udeb_amd64\';  if [[ -n \"$tmpURL\" ]]; then    DDURL=\"$tmpURL\"    echo \"$DDURL\" |grep -q \'^http://\\|^ftp://\\|^https://\';    [[ $? -ne \'0\' ]] && echo \'Please input vaild URL,Only support http://, ftp:// and https:// !\' && exit 1;    [[ -n \"$tmpSSL\" ]] && SSL_SUPPORT=\"$tmpSSL\";  else    echo \'Please input vaild image URL! \';    exit 1;  fi} [[ -n \"$tmpINS\" ]] && {  [[ \"$tmpINS\" == \'auto\' ]] && inVNC=\'n\';  [[ \"$tmpINS\" == \'manual\' ]] && inVNC=\'y\';} [ -n \"$ipAddr\" ] && [ -n \"$ipMask\" ] && [ -n \"$ipGate\" ] && setNet=\'1\';[[ -n \"$tmpWORD\" ]] && myPASSWORD=\"$(openssl passwd -1 \"$tmpWORD\")\";[[ -z \"$myPASSWORD\" ]] && myPASSWORD=\'$1$0shYGfBd$8v189JOozDO1jPqPO645e1\';[[ -n \"$tmpFW\" ]] && INCFW=\"$tmpFW\";[[ -z \"$INCFW\" ]] && INCFW=\'0\'; clear && echo -e \"\\n\\033[36m# Install\\033[0m\\n\" ASKVNC(){  inVNC=\'y\';  [[ \"$ddMode\" == \'0\' ]] && {    echo -ne \"\\033[34mCan you login VNC?\\033[0m\\e[33m[\\e[32my\\e[33m/n]\\e[0m \"    read tmpinVNC    [[ -n \"$inVNCtmp\" ]] && inVNC=\"$tmpinVNC\"  }  [ \"$inVNC\" == \'y\' -o \"$inVNC\" == \'Y\' ] && inVNC=\'y\';  [ \"$inVNC\" == \'n\' -o \"$inVNC\" == \'N\' ] && inVNC=\'n\';} [ \"$inVNC\" == \'y\' -o \"$inVNC\" == \'n\' ] || ASKVNC;[[ \"$linuxdists\" == \'debian\' ]] && LinuxName=\'Debian\';[[ \"$linuxdists\" == \'ubuntu\' ]] && LinuxName=\'Ubuntu\';[[ \"$linuxdists\" == \'centos\' ]] && LinuxName=\'CentOS\';[[ \"$ddMode\" == \'0\' ]] && {   [[ \"$inVNC\" == \'y\' ]] && echo -e \"\\033[34mManual Mode\\033[0m insatll \\033[33m$LinuxName\\033[0m [\\033[33m$DIST\\033[0m] [\\033[33m$VER\\033[0m] in VNC. \"  [[ \"$inVNC\" == \'n\' ]] && echo -e \"\\033[34mAuto Mode\\033[0m insatll \\033[33m$LinuxName\\033[0m [\\033[33m$DIST\\033[0m] [\\033[33m$VER\\033[0m]. \"}[[ \"$ddMode\" == \'1\' ]] && {  echo -ne \"\\033[34mAuto Mode\\033[0m insatll \\033[33mWindows\\033[0m\\n[\\033[33m$DDURL\\033[0m]\\n\"} if [[ \"$linuxdists\" == \'centos\' ]]; then  if [[ \"$DIST\" != \"$UNVER\" ]]; then    awk \'BEGIN{print \'${UNVER}\'-\'${DIST}\'}\' |grep -q \'^-\'    if [ $? != \'0\' ]; then      UNKNOWHW=\'1\';      echo -en \"\\033[33mThe version lower then \\033[31m$UNVER\\033[33m may not support in auto mode! \\033[0m\\n\";      if [[ \"$inVNC\" == \'n\' ]]; then        echo -en \"\\033[35mYou can connect VNC with \\033[32mPublic IP\\033[35m and port \\033[32m1\\033[35m/\\033[32m5901\\033[35m in vnc viewer.\\033[0m\\n\"        read -n 1 -p \"Press Enter to continue...\" INP        [[ \"$INP\" != \'\' ]] && echo -ne \'\\b \\n\\n\';      fi    fi    awk \'BEGIN{print \'${UNVER}\'-\'${DIST}\'+0.59}\' |grep -q \'^-\'    if [ $? == \'0\' ]; then      echo -en \"\\n\\033[31mThe version higher then \\033[33m6.9 \\033[31mis not support in current! \\033[0m\\n\\n\"      exit 1;    fi  fifi echo -e \"\\n[\\033[33m$LinuxName\\033[0m] [\\033[33m$DIST\\033[0m] [\\033[33m$VER\\033[0m] Downloading...\" [[ -z \"$DISTMirror\" ]] && echo -ne \"\\033[31mError! \\033[0mInvaild mirror! \\n\" && exit 1 if [[ \"$linuxdists\" == \'debian\' ]] || [[ \"$linuxdists\" == \'ubuntu\' ]]; thenwget --no-check-certificate -qO \'/boot/initrd.img\' \"http://$DISTMirror/dists/$DIST/main/installer-$VER/current/images/netboot/$linuxdists-installer/$VER/initrd.gz\"[[ $? -ne \'0\' ]] && echo -ne \"\\033[31mError! \\033[0mDownload \'initrd.img\' for \\033[33m$linuxdists\\033[0m failed! \\n\" && exit 1wget --no-check-certificate -qO \'/boot/vmlinuz\' \"http://$DISTMirror/dists/$DIST/main/installer-$VER/current/images/netboot/$linuxdists-installer/$VER/linux\"[[ $? -ne \'0\' ]] && echo -ne \"\\033[31mError! \\033[0mDownload \'vmlinuz\' for \\033[33m$linuxdists\\033[0m failed! \\n\" && exit 1elif [[ \"$linuxdists\" == \'centos\' ]]; thenwget --no-check-certificate -qO \'/boot/initrd.img\' \"http://$DISTMirror/$DIST/os/$VER/isolinux/initrd.img\"[[ $? -ne \'0\' ]] && echo -ne \"\\033[31mError! \\033[0mDownload \'initrd.img\' for \\033[33m$linuxdists\\033[0m failed! \\n\" && exit 1wget --no-check-certificate -qO \'/boot/vmlinuz\' \"http://$DISTMirror/$DIST/os/$VER/isolinux/vmlinuz\"[[ $? -ne \'0\' ]] && echo -ne \"\\033[31mError! \\033[0mDownload \'vmlinuz\' for \\033[33m$linuxdists\\033[0m failed! \\n\" && exit 1fiif [[ \"$linuxdists\" == \'debian\' ]]; then  if [[ \"$INCFW\" == \'1\' ]]; then    wget --no-check-certificate -qO \'/boot/firmware.cpio.gz\' \"http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/$DIST/current/firmware.cpio.gz\"    [[ $? -ne \'0\' ]] && echo -ne \"\\033[31mError! \\033[0mDownload \'firmware\' for \\033[33m$linuxdists\\033[0m failed! \\n\" && exit 1  fifi [[ \"$setNet\" == \'1\' ]] && {  IPv4=\"$ipAddr\";  MASK=\"$ipMask\";  GATE=\"$ipGate\";} || {  DEFAULTNET=\"$(ip route show |grep -o \'default via [0-9]\\{1,3\\}.[0-9]\\{1,3\\}.[0-9]\\{1,3\\}.[0-9]\\{1,3\\}.*\' |head -n1 |sed \'s/proto.*\\|onlink.*//g\' |awk \'{print $NF}\')\";  [[ -n \"$DEFAULTNET\" ]] && IPSUB=\"$(ip addr |grep \'\'${DEFAULTNET}\'\' |grep \'global\' |grep \'brd\' |head -n1 |grep -o \'[0-9]\\{1,3\\}.[0-9]\\{1,3\\}.[0-9]\\{1,3\\}.[0-9]\\{1,3\\}/[0-9]\\{1,2\\}\')\";  IPv4=\"$(echo -n \"$IPSUB\" |cut -d\'/\' -f1)\";  NETSUB=\"$(echo -n \"$IPSUB\" |grep -o \'/[0-9]\\{1,2\\}\')\";  GATE=\"$(ip route show |grep -o \'default via [0-9]\\{1,3\\}.[0-9]\\{1,3\\}.[0-9]\\{1,3\\}.[0-9]\\{1,3\\}\' |head -n1 |grep -o \'[0-9]\\{1,3\\}.[0-9]\\{1,3\\}.[0-9]\\{1,3\\}.[0-9]\\{1,3\\}\')\";  [[ -n \"$NETSUB\" ]] && MASK=\"$(echo -n \'128.0.0.0/1,192.0.0.0/2,224.0.0.0/3,240.0.0.0/4,248.0.0.0/5,252.0.0.0/6,254.0.0.0/7,255.0.0.0/8,255.128.0.0/9,255.192.0.0/10,255.224.0.0/11,255.240.0.0/12,255.248.0.0/13,255.252.0.0/14,255.254.0.0/15,255.255.0.0/16,255.255.128.0/17,255.255.192.0/18,255.255.224.0/19,255.255.240.0/20,255.255.248.0/21,255.255.252.0/22,255.255.254.0/23,255.255.255.0/24,255.255.255.128/25,255.255.255.192/26,255.255.255.224/27,255.255.255.240/28,255.255.255.248/29,255.255.255.252/30,255.255.255.254/31,255.255.255.255/32\' |grep -o \'[0-9]\\{1,3\\}.[0-9]\\{1,3\\}.[0-9]\\{1,3\\}.[0-9]\\{1,3\\}\'${NETSUB}\'\' |cut -d\'/\' -f1)\";} [[ -n \"$GATE\" ]] && [[ -n \"$MASK\" ]] && [[ -n \"$IPv4\" ]] || {echo \"Not found `ip command`, It will use `route command`.\"ipNum() {  local IFS=\'.\';  read ip1 ip2 ip3 ip4 <<<\"$1\";  echo $((ip1*(1<<24)+ip2*(1<<16)+ip3*(1<<8)+ip4)); } SelectMax(){ ii=0; for IPITEM in `route -n |awk -v OUT=$1 \'{print $OUT}\' |grep \'[0-9]\\{1,3\\}.[0-9]\\{1,3\\}.[0-9]\\{1,3\\}.[0-9]\\{1,3\\}\'` do NumTMP=\"$(ipNum $IPITEM)\"; eval \"arrayNum[$ii]=\'$NumTMP,$IPITEM\'\"; ii=$[$ii+1]; done echo ${arrayNum[@]} |sed \'s/\\s/\\n/g\' |sort -n -k 1 -t \',\' |tail -n1 |cut -d\',\' -f2; } [[ -z $IPv4 ]] && IPv4=\"$(ifconfig |grep \'Bcast\' |head -n1 |grep -o \'[0-9]\\{1,3\\}.[0-9]\\{1,3\\}.[0-9]\\{1,3\\}.[0-9]\\{1,3\\}\' |head -n1)\"; [[ -z $GATE ]] && GATE=\"$(SelectMax 2)\"; [[ -z $MASK ]] && MASK=\"$(SelectMax 3)\"; [[ -n \"$GATE\" ]] && [[ -n \"$MASK\" ]] && [[ -n \"$IPv4\" ]] || { echo \"Error! Not configure network. \"; exit 1; } } [[ \"$setNet\" != \'1\' ]] && [[ -f \'/etc/network/interfaces\' ]] && { [[ -z \"$(sed -n \'/iface.*inet static/p\' /etc/network/interfaces)\" ]] && AutoNet=\'1\' || AutoNet=\'0\'; [[ -d /etc/network/interfaces.d ]] && { ICFGN=\"$(find /etc/network/interfaces.d -name \'*.cfg\' |wc -l)\" || ICFGN=\'0\'; [[ \"$ICFGN\" -ne \'0\' ]] && { for NetCFG in `ls -1 /etc/network/interfaces.d/*.cfg` do [[ -z \"$(cat $NetCFG | sed -n \'/iface.*inet static/p\')\" ]] && AutoNet=\'1\' || AutoNet=\'0\'; [[ \"$AutoNet\" -eq \'0\' ]] && break; done } } } [[ \"$setNet\" != \'1\' ]] && [[ -d \'/etc/sysconfig/network-scripts\' ]] && { ICFGN=\"$(find /etc/sysconfig/network-scripts -name \'ifcfg-*\' |grep -v \'lo\'|wc -l)\" || ICFGN=\'0\'; [[ \"$ICFGN\" -ne \'0\' ]] && { for NetCFG in `ls -1 /etc/sysconfig/network-scripts/ifcfg-* |grep -v \'lo$\' |grep -v \':[0-9]\\{1,\\}\'` do [[ -n \"$(cat $NetCFG | sed -n \'/BOOTPROTO.*[dD][hH][cC][pP]/p\')\" ]] && AutoNet=\'1\' || { AutoNet=\'0\' && . $NetCFG; [[ -n $NETMASK ]] && MASK=\"$NETMASK\"; [[ -n $GATEWAY ]] && GATE=\"$GATEWAY\"; } [[ \"$AutoNet\" -eq \'0\' ]] && break; done } } [[ ! -f $GRUBDIR/$GRUBFILE ]] && echo \"Error! Not Found $GRUBFILE. \" && exit 1; [[ ! -f $GRUBDIR/$GRUBFILE.old ]] && [[ -f $GRUBDIR/$GRUBFILE.bak ]] && mv -f $GRUBDIR/$GRUBFILE.bak $GRUBDIR/$GRUBFILE.old; mv -f $GRUBDIR/$GRUBFILE $GRUBDIR/$GRUBFILE.bak; [[ -f $GRUBDIR/$GRUBFILE.old ]] && cat $GRUBDIR/$GRUBFILE.old >$GRUBDIR/$GRUBFILE || cat $GRUBDIR/$GRUBFILE.bak >$GRUBDIR/$GRUBFILE; [[ \"$GRUBOLD\" == \'0\' ]] && {  READGRUB=\'/tmp/grub.read\'  cat $GRUBDIR/$GRUBFILE |sed -n \'1h;1!H;$g;s/\\n/%%%%%%%/g;$p\' |grep -om 1 \'menuentry\\ [^{]*{[^}]*}%%%%%%%\' |sed \'s/%%%%%%%/\\n/g\' >$READGRUB  LoadNum=\"$(cat $READGRUB |grep -c \'menuentry \')\"  if [[ \"$LoadNum\" -eq \'1\' ]]; then    cat $READGRUB |sed \'/^$/d\' >/tmp/grub.new;  elif [[ \"$LoadNum\" -gt \'1\' ]]; then    CFG0=\"$(awk \'/menuentry /{print NR}\' $READGRUB|head -n 1)\";    CFG2=\"$(awk \'/menuentry /{print NR}\' $READGRUB|head -n 2 |tail -n 1)\";    CFG1=\"\";    for tmpCFG in `awk \'/}/{print NR}\' $READGRUB`      do        [ \"$tmpCFG\" -gt \"$CFG0\" -a \"$tmpCFG\" -lt \"$CFG2\" ] && CFG1=\"$tmpCFG\";      done    [[ -z \"$CFG1\" ]] && {      echo \"Error! read $GRUBFILE. \";      exit 1;    }     sed -n \"$CFG0,$CFG1\"p $READGRUB >/tmp/grub.new;    [[ -f /tmp/grub.new ]] && [[ \"$(grep -c \'{\' /tmp/grub.new)\" -eq \"$(grep -c \'}\' /tmp/grub.new)\" ]] || {      echo -ne \"\\033[31mError! \\033[0mNot configure $GRUBFILE. \\n\";      exit 1;    }  fi  [ ! -f /tmp/grub.new ] && echo \"Error! $GRUBFILE. \" && exit 1;  sed -i \"/menuentry.*/c\\menuentry\\ \\\'Install OS \\[$DIST\\ $VER\\]\\\'\\ --class debian\\ --class\\ gnu-linux\\ --class\\ gnu\\ --class\\ os\\ \\{\" /tmp/grub.new  sed -i \"/echo.*Loading/d\" /tmp/grub.new;  INSERTGRUB=\"$(awk \'/menuentry /{print NR}\' $GRUBDIR/$GRUBFILE|head -n 1)\"} [[ \"$GRUBOLD\" == \'1\' ]] && {  CFG0=\"$(awk \'/title[\\ ]|title[\\t]/{print NR}\' $GRUBDIR/$GRUBFILE|head -n 1)\";  CFG1=\"$(awk \'/title[\\ ]|title[\\t]/{print NR}\' $GRUBDIR/$GRUBFILE|head -n 2 |tail -n 1)\";  [[ -n $CFG0 ]] && [ -z $CFG1 -o $CFG1 == $CFG0 ] && sed -n \"$CFG0,$\"p $GRUBDIR/$GRUBFILE >/tmp/grub.new;  [[ -n $CFG0 ]] && [ -z $CFG1 -o $CFG1 != $CFG0 ] && sed -n \"$CFG0,$[$CFG1-1]\"p $GRUBDIR/$GRUBFILE >/tmp/grub.new;  [[ ! -f /tmp/grub.new ]] && echo \"Error! configure append $GRUBFILE. \" && exit 1;  sed -i \"/title.*/c\\title\\ \\\'Install OS \\[$DIST\\ $VER\\]\\\'\" /tmp/grub.new;  sed -i \'/^#/d\' /tmp/grub.new;  INSERTGRUB=\"$(awk \'/title[\\ ]|title[\\t]/{print NR}\' $GRUBDIR/$GRUBFILE|head -n 1)\"} [[ -n \"$(grep \'linux.*/\\|kernel.*/\' /tmp/grub.new |awk \'{print $2}\' |tail -n 1 |grep \'^/boot/\')\" ]] && Type=\'InBoot\' || Type=\'NoBoot\'; LinuxKernel=\"$(grep \'linux.*/\\|kernel.*/\' /tmp/grub.new |awk \'{print $1}\' |head -n 1)\";[[ -z \"$LinuxKernel\" ]] && echo \"Error! read grub config! \" && exit 1;LinuxIMG=\"$(grep \'initrd.*/\' /tmp/grub.new |awk \'{print $1}\' |tail -n 1)\";[ -z \"$LinuxIMG\" ] && sed -i \"/$LinuxKernel.*\\//a\\\\\\tinitrd\\ \\/\" /tmp/grub.new && LinuxIMG=\'initrd\'; if [[ \"$linuxdists\" == \'debian\' ]] || [[ \"$linuxdists\" == \'ubuntu\' ]]; then  BOOT_OPTION=\"auto=true hostname=$linuxdists domain= -- quiet\"elif [[ \"$linuxdists\" == \'centos\' ]]; then  BOOT_OPTION=\"ks=file://ks.cfg ksdevice=link\"fi [[ \"$Type\" == \'InBoot\' ]] && {  sed -i \"/$LinuxKernel.*\\//c\\\\\\t$LinuxKernel\\\\t\\/boot\\/vmlinuz $BOOT_OPTION\" /tmp/grub.new;  sed -i \"/$LinuxIMG.*\\//c\\\\\\t$LinuxIMG\\\\t\\/boot\\/initrd.img\" /tmp/grub.new;} [[ \"$Type\" == \'NoBoot\' ]] && {  sed -i \"/$LinuxKernel.*\\//c\\\\\\t$LinuxKernel\\\\t\\/vmlinuz $BOOT_OPTION\" /tmp/grub.new;  sed -i \"/$LinuxIMG.*\\//c\\\\\\t$LinuxIMG\\\\t\\/initrd.img\" /tmp/grub.new;} sed -i \'$a\\\\n\' /tmp/grub.new; [[ \"$inVNC\" == \'n\' ]] && {GRUBPATCH=\'0\'; [ -f \'/etc/network/interfaces\' -o -d \'/etc/sysconfig/network-scripts\' ] || {  echo \"Error, Not found interfaces config.\";  exit 1;} sed -i \'\'${INSERTGRUB}\'i\\\\n\' $GRUBDIR/$GRUBFILE;sed -i \'\'${INSERTGRUB}\'r /tmp/grub.new\' $GRUBDIR/$GRUBFILE;[[ -f  $GRUBDIR/grubenv ]] && sed -i \'s/saved_entry/#saved_entry/g\' $GRUBDIR/grubenv; [[ -d /boot/tmp ]] && rm -rf /boot/tmp;mkdir -p /boot/tmp;cd /boot/tmp;if [[ \"$linuxdists\" == \'debian\' ]] || [[ \"$linuxdists\" == \'ubuntu\' ]]; then  COMPTYPE=\"gzip\";elif [[ \"$linuxdists\" == \'centos\' ]]; then  COMPTYPE=\"$(file /boot/initrd.img |grep -o \':.*compressed data\' |cut -d\' \' -f2 |sed -r \'s/(.*)/\\L\\1/\' |head -n1)\"  [[ -z \"$COMPTYPE\" ]] && echo \"Detect compressed type fail.\" && exit 1;fiCompDected=\'0\'for ListCOMP in `echo -en \'gzip\\nlzma\\nxz\'`  do    if [[ \"$COMPTYPE\" == \"$ListCOMP\" ]]; then      CompDected=\'1\'      if [[ \"$COMPTYPE\" == \'gzip\' ]]; then        NewIMG=\"initrd.img.gz\"      else        NewIMG=\"initrd.img.$COMPTYPE\"      fi      mv -f \"/boot/initrd.img\" \"/boot/$NewIMG\"      break;    fi  done[[ \"$CompDected\" != \'1\' ]] && echo \"Detect compressed type not support.\" && exit 1;[[ \"$COMPTYPE\" == \'lzma\' ]] && UNCOMP=\'xz --format=lzma --decompress\';[[ \"$COMPTYPE\" == \'xz\' ]] && UNCOMP=\'xz --decompress\';[[ \"$COMPTYPE\" == \'gzip\' ]] && UNCOMP=\'gzip -d\'; $UNCOMP < ../$NewIMG | cpio --extract --verbose --make-directories --no-absolute-filenames >>/dev/null 2>&1 if [[ \"$linuxdists\" == \'debian\' ]] || [[ \"$linuxdists\" == \'ubuntu\' ]]; thencat >/boot/tmp/preseed.cfg<>/dev/null 2>&1} [[ \"$ddMode\" == \'1\' ]] && {WinDHCP(){  echo -ne \"@ECHO OFF\\r\\ncd\\040\\057d\\040\\042\\045ProgramData\\045\\057Microsoft\\057Windows\\057Start\\040Menu\\057Programs\\057Startup\\042\\r\\ndel\\040\\057f\\040\\057q\\040net\\056bat\\r\\n\\r\\n\" >\'/boot/tmp/net.tmp\';}WinNoDHCP(){  echo -ne \"@ECHO OFF\\r\\ncd\\056\\076\\045windir\\045\\GetAdmin\\r\\nif\\040exist\\040\\045windir\\045\\GetAdmin\\040\\050del\\040\\057f\\040\\057q\\040\\042\\045windir\\045\\GetAdmin\\042\\051\\040else\\040\\050\\r\\necho\\040CreateObject^\\050\\042Shell\\056Application\\042^\\051\\056ShellExecute\\040\\042\\045~s0\\042\\054\\040\\042\\045\\052\\042\\054\\040\\042\\042\\054\\040\\042runas\\042\\054\\040\\061\\040\\076\\076\\040\\042\\045temp\\045\\Admin\\056vbs\\042\\r\\n\\042\\045temp\\045\\Admin\\056vbs\\042\\r\\ndel\\040\\057f\\040\\057q\\040\\042\\045temp\\045\\Admin\\056vbs\\042\\r\\nexit\\040\\057b\\040\\062\\051\\r\\nfor\\040\\057f\\040\\042tokens=\\063\\052\\042\\040\\045\\045i\\040in\\040\\050\\047netsh\\040interface\\040show\\040interface\\040^|more\\040+3\\040^|findstr\\040\\057R\\040\\042\\u672c\\u5730\\056\\052\\040\\u4ee5\\u592a\\056\\052\\040Local\\056\\052\\040Ethernet\\042\\047\\051\\040do\\040\\050set\\040EthName=\\045\\045j\\051\\r\\nnetsh\\040-c\\040interface\\040ip\\040set\\040address\\040name=\\042\\045EthName\\045\\042\\040source=static\\040address=$IPv4\\040mask=$MASK\\040gateway=$GATE\\r\\nnetsh\\040-c\\040interface\\040ip\\040add\\040dnsservers\\040name=\\042\\045EthName\\045\\042\\040address=\\070\\056\\070\\056\\070\\056\\070\\040index=1\\040validate=no\\r\\nnetsh\\040-c\\040interface\\040ip\\040add\\040dnsservers\\040name=\\042\\045EthName\\045\\042\\040address=\\070\\056\\070\\056\\064\\056\\064\\040index=2\\040validate=no\\r\\ncd\\040\\057d\\040\\042\\045ProgramData\\045\\057Microsoft\\057Windows\\057Start\\040Menu\\057Programs\\057Startup\\042\\r\\ndel\\040\\057f\\040\\057q\\040net\\056bat\\r\\n\\r\\n\" >\'/boot/tmp/net.tmp\';}  [[ \"$setNet\" == \'1\' ]] && WinNoDHCP;  [[ \"$setNet\" == \'0\' ]] && {    [[ \"$AutoNet\" -eq \'1\' ]] && WinDHCP;    [[ \"$AutoNet\" -eq \'0\' ]] && WinNoDHCP;  }  iconv -f \'UTF-8\' -t \'GBK\' \'/boot/tmp/net.tmp\' -o \'/boot/tmp/net.bat\'  rm -rf \'/boot/tmp/net.tmp\'  echo \"$DDURL\" |grep -q \'^https://\'  [[ $? -eq \'0\' ]] && {    echo -ne \'\\nAdd ssl support...\\n\'    [[ -n $SSL_SUPPORT ]] && {      wget --no-check-certificate -qO- \"$SSL_SUPPORT\" |tar -x      [[ ! -f  /boot/tmp/usr/bin/wget ]] && echo \'Error! SSL_SUPPORT.\' && exit 1;      sed -i \'s/wget\\ -qO-/\\/usr\\/bin\\/wget\\ --no-check-certificate\\ --retry-connrefused\\ --tries=7\\ --continue\\ -qO-/g\' /boot/tmp/preseed.cfg      [[ $? -eq \'0\' ]] && echo -ne \'Success! \\n\\n\'    } || {    echo -ne \'Not ssl support package! \\n\\n\';    exit 1;    }  }} [[ \"$ddMode\" == \'0\' ]] && {  sed -i \'/anna-install/d\' /boot/tmp/preseed.cfg  sed -i \'s/wget.*\\/sbin\\/reboot\\;\\ //g\' /boot/tmp/preseed.cfg} elif [[ \"$linuxdists\" == \'centos\' ]]; thencat >/boot/tmp/ks.cfg< ../initrd.img;rm -rf /boot/tmp;} [[ \"$inVNC\" == \'y\' ]] && {  sed -i \'$i\\\\n\' $GRUBDIR/$GRUBFILE  sed -i \'$r /tmp/grub.new\' $GRUBDIR/$GRUBFILE  echo -e \"\\n\\033[33m\\033[04mIt will reboot! \\nPlease look at VNC! \\nSelect\\033[0m\\033[32m Install OS [$DIST $VER] \\033[33m\\033[4mto install system.\\033[04m\\n\\n\\033[31m\\033[04mThere is some information for you.\\nDO NOT CLOSE THE WINDOW! \\033[0m\\n\"  echo -e \"\\033[35mIPv4\\t\\tNETMASK\\t\\tGATEWAY\\033[0m\"  echo -e \"\\033[36m\\033[04m$IPv4\\033[0m\\t\\033[36m\\033[04m$MASK\\033[0m\\t\\033[36m\\033[04m$GATE\\033[0m\\n\\n\"   read -n 1 -p \"Press Enter to reboot...\" INP  [[ \"$INP\" != \'\' ]] && echo -ne \'\\b \\n\\n\';} chown root:root $GRUBDIR/$GRUBFILEchmod 444 $GRUBDIR/$GRUBFILE sleep 3 && reboot >/dev/null 2>&1

萌咖原文地址:https://moeclub.org/?v=936

赞(4) 打赏
未经允许不得转载:沃园 » Linux VPS一键网络重装纯净版Debian/Ubuntu/CentOS系统脚本
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏