#!/bin/bash
#Author WuZixiao
#初始化配置Linux系统
#注意:是ens33还是ens32
#2022年12月28日17:00:00
##################################################################
#定义变量
read -p "请输入主机名:" name
read -p "请输入ip地址:" ip
read -p "请输入网关地址:" ip1
selinux_dir="/etc/selinux/config"
set_log="/root/initialOS.log"
fstab="/etc/fstab"
motd="/etc/motd"
ens32="/etc/sysconfig/network-scripts/ifcfg-ens32"
host="/etc/hosts"
repo="/etc/yum.repos.d"
packages="lrzsz net-tools gcc gcc-c++ iostat vim tree wget nmap lsof htop iftop iotop sysstat psmisc curl lynx gzip bzip2 ntp xinetd"
epel="epel-release"
messages=("永久关闭firewalld" "永久关闭selinux" "永久关闭iptables" "设置主机名" "设置IP地址" "设置提示语" "设置静态解析" "设置镜像自动挂载" "配置阿里源和本地yum源" "安装必备软件工具" "设置时间同步" "设置行号自显")
##################################################################
#定义函数
delimiter(){
echo -e "\033[32;1m※※※※※※※※※※※※※※※※※※※※※※※※※※\033[0m"
}
echoinfo(){
echo -e "\033[35;1m#$1\033[0m"
}
firewalld_off(){#关闭firewalld
delimiter | tee -a $set_log
echoinfo ${messages[0]} | tee -a $set_log
systemctl stop firewalld &>> $set_log
systemctl disable firewalld &>> $set_log
sleep 2
num1="$(systemctl status firewalld | expr length "`awk '/Active/{print $2}'`")"
if [ $num1 -eq 8 ];then
echo -e "\033[44;37;1m firewalld已经永久关闭!!!\033[0m" | tee -a $set_log
else
echo -e "\033[43;37;1m firewalld关闭失败!!!\033[0m" | tee -a $set_log
fi
}
selinux_off(){#关闭selinux
delimiter | tee -a $set_log
echoinfo ${messages[1]} | tee -a $set_log
sed -i '/SELINUX=enforcing/c \SELINUX=disabled' $selinux_dir &>> $set_log
sleep 2
#num2="$(cat /etc/selinux/config | expr length substr "`sed -n '7p'`" 9 8)"
num2="$(expr length "`getenforce`")"
if [ $num2 -eq 8 ];then
echo -e "\033[44;37;1m selinux已经永久关闭!!!\033[0m" | tee -a $set_log
else
echo -e "\033[43;37;1m selinux关闭失败!!!\033[0m" | tee -a $set_log
fi
}
iptable_off(){#关闭iptables
delimiter | tee -a $set_log
echoinfo ${messages[2]} | tee -a $set_log
yum install -y iptables-services &>> $set_log
systemctl daemon-reload &>> $set_log
systemctl stop iptables.service &>> $set_log
systemctl disable iptables.service &>> $set_log
#若要重新启动,需yum安装iptables-services使用systemctl unmask/restart iptables启动即可
sleep 2
num3="$(systemctl status iptables.service | expr length "`awk '/Active/{print $2}'`")"
#num3="$(systemctl status iptables | grep Active | expr length "`cut -d " " -f 5`")"
if [ $num3 -eq 8 ];then
echo -e "\033[44;37;1m iptables已经永久关闭!!!\033[0m" | tee -a $set_log
else
echo -e "\033[43;37;1m iptables关闭失败!!!\033[0m" | tee -a $set_log
fi
}
sethostname(){#设置主机名
delimiter | tee -a $set_log
echoinfo ${messages[3]} | tee -a $set_log
hostnamectl set-hostname $name &>> $set_log
sleep 2
echo -e "\033[44;37;1m 当前主机名为:$(hostname) \033[0m" | tee -a $set_log
}
setip(){#设置IP地址
delimiter | tee -a $set_log
echoinfo ${messages[4]} | tee -a $set_log
echo "TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens32"
UUID="$(nmcli conn | awk '/ens32/{print $3}')"
DEVICE="ens32"
ONBOOT="yes"
IPADDR="$ip"
PREFIX="24"
GATEWAY="$ip1"
DNS1="114.114.114.114"
DNS2="8.8.8.8"
IPV6_PRIVACY="no"" &> $ens32 | tee -a $set_log
#systemctl restart network &>> $set_log
sleep 2
#ip2="$(ip a | awk '/scope global/{print $2}' | cut -d "/" -f 1 | sed -n "1p")"
ip2="$(cat /etc/sysconfig/network-scripts/ifcfg-ens32 | awk -F "=" '/IPADDR/{print $2}')"
echo -e "\033[44;37;1m 当前主机IP地址为:$ip2 \033[0m" | tee -a $set_log
}
setmotd(){#设置提示语
delimiter | tee -a $set_log
echoinfo ${messages[5]} | tee -a $set_log
echo "本人声明,如果您以非法方式登录本服务器,您将承担法律责任!!!
I declare that if you log on this server by illegal means, you will be held legally responsible!!!
Warning!!! This is the $name server with an IP address of $ip !!!" &> $motd | tee -a $set_log
sleep 2
}
sethosts(){#设置静态解析
delimiter | tee -a $set_log
echoinfo ${messages[6]} | tee -a $set_log
echo "$ip$name" &>> $host | tee -a $set_log
}
setiso(){#设置镜像自动挂载
delimiter | tee -a $set_log
echoinfo ${messages[7]} | tee -a $set_log
mkdir /mnt/cdrom &>> $set_log
echo "/dev/sr0 /mnt/cdrom iso9660 defaults 0 0" &>> $fstab | tee -a $set_log
umount -a &>> $set_log
sleep 3
mount -a &>> $set_log
sleep 5
num6="$(df -h | awk '/sr0/{printf "%.f\n",$5}')"
if [ $num6 -eq 100 ];then
echo -e "\033[44;37;1m 本地镜像挂载成功!!!\033[0m" | tee -a $set_log
elif [ -z "$num6" ];then
umount -a &>> $set_log
sleep 3
mount -a &>> $set_log
sleep 5
num7="$(df -h | awk '/sr0/{printf "%.f\n",$5}')"
if [ $num7 -eq 100 ];then
echo -e "\033[44;37;1m 本地镜像挂载成功!!!\033[0m" | tee -a $set_log
else
echo -e "\033[43;37;1m WARNING!!! WARNING!!! WARNING!!! \033[0m" | tee -a $set_log
fi
fi
}
setrepo(){#配置阿里源和本地yum源
delimiter | tee -a $set_log
echoinfo ${messages[8]} | tee -a $set_log
mv -f $repo/* /opt/ &>> $set_log
echo "[centos7]
name=centos_7.9
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0" &> $repo/local.repo | tee -a $set_log
wget -O $repo/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo &>> $set_log
yum clean all &>> $set_log
yum repolist &>> $set_log
sleep 2
num4="$(ls /etc/yum.repos.d/ | wc -l)"
if [ $num4 -eq 2 ];then
echo -e "\033[44;37;1m 阿里源和本地yum源已配置成功!!! \033[0m" | tee -a $set_log
ls $repo/ | tee -a $set_log
else
echo -e "\033[43;37;1m 阿里源和本地yum源配置失败!!! \033[0m" | tee -a $set_log
ls $repo/ | tee -a $set_log
fi
}
installs(){#安装必备软件工具
delimiter | tee -a $set_log
echoinfo ${messages[9]} | tee -a $set_log
yum clean all &>> $set_log
yum makecache &>> $set_log
sleep 2
yum install -y $packages &>> $set_log
echo -e "\033[44;37;1m 必备工具软件已安装完成,可以正常使用系统!!! \033[0m" | tee -a $set_log
}
setdate(){#设置时间同步
delimiter | tee -a $set_log
echoinfo ${messages[10]} | tee -a $set_log
ntpdate ntp1.aliyun.com &>> $set_log
sleep 2
echo -e "\033[44;37;1m $(date) \033[0m" | tee -a $set_log
}
setnu(){#设置行号自显
delimiter | tee -a $set_log
echoinfo ${messages[11]} | tee -a $set_log
sed -i '$aset nu' /etc/virc
sed -i '$aset nu' /etc/vimrc
sleep 2
echo -e "\033[44;37;1m 设置行号自显成功!!! \033[0m" | tee -a $set_log
}
##################################################################
echo "################BEGIN!!!$(date)################" | tee -a $set_log
firewalld_off
wait
selinux_off
wait
iptable_off
wait
sethostname
wait
setip
wait
setmotd
wait
sethosts
wait
setiso
wait
setrepo
wait
installs
wait
setdate
wait
setnu
wait
echo "################END!!!$(date)################" | tee -a $set_log
##################################################################