# cat init.sh
#!/bin/bash
# V - 2022.07.27
# 如果是向 vim 中粘贴的话,先在末行模式开启粘贴模式避免自动缩进 :set paste
export LANG=zh_CN.UTF-8
c_re=$(rpm -q centos-release | cut -d- -f3)
# 定义当前操作系统发行版的数字变量
ZZ="^(25[0-5]\.|2[0-4][0-9]\.|1[0-9][0-9]\.|[1-9][0-9]\.|[0-9]\.){3}(25[0-4]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[1-9])$"
# 定义 IP 地址的正则表达式
if [ $c_re -ne 7 ]
then
echo "不支持的操作系统!"
exit 1
fi
# 如果不是 7 则退出
cat <<EOF
警告!此脚本仅适用于实验环境,禁止用于正式环境!
脚本支持 CentOS 7 单网卡的IP设置
将网卡改名为 eth0
并关闭防火墙和 Selinux,配置本地 yum 源(需连接镜像文件)
正常执行完毕需要重启系统生效配置。
请确保配置的IP和VMware的网络配置为同一网段,默认路由为 *.2 ,掩码为24位。
EOF
while :; do
read -p "请输入需要配置的IP地址(不输入则退出脚本):" N_ip
if [ -z "$N_ip" ]; then
echo "再见"
exit
elif [[ $N_ip =~ $ZZ ]]; then
read -p "请输入主机名前缀(不要用中文和特殊符号):" Name
break
else
echo "请检查IP格式"
fi
done
N_mask=$(echo "$N_ip" | awk -F "." '{print $1"."$2"."$3}')
Host_nu=$(echo "$N_ip" | awk -F "." '{print $4}')
cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << EOF
DEVICE=eth0
NAME=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=$N_ip
NETMASK=255.255.255.0
GATEWAY=$N_mask.254
DNS1=10.39.27.219
DNS2=114.114.114.114
EOF
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
cat > /etc/yum.repos.d/local.repo << EOF
[local]
name=local repo
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
EOF
umount /dev/sr0 &> /dev/null
[ -d /media/cdrom ] || mkdir /media/cdrom && mount /dev/sr0 /media/cdrom &> /dev/null
if [ $? -ne 0 ]; then
echo "检查光驱是否连接"
exit 1
fi
if [ $(grep -c sr0 /etc/fstab) -eq 0 ]; then
cat >> /etc/fstab << EOF
/dev/sr0 /media/cdrom iso9660 defaults 0 0
EOF
fi
yum clean all && yum makecache
if [ $? -ne 0 ]; then
echo "yum error"
exit 1
fi
yum -y install gcc make autoconf gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel vim lrzsz tree lsof tcpdump net-tools bc bzip2 zip unzip nfs-utils man-pages apr* redhat-rpm-config bash-completion chrony wget psmisc yum-utils telnet
yum -y remove NetworkManager
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
sed -i 's/#UseDNS yes/UseDNS no/g' /etc/ssh/sshd_config
cat > /etc/profile.d/reset.sh <<'EOF'
alias cdn='cd /etc/sysconfig/network-scripts/'
alias renet='systemctl restart network'
export TERM=linux
export PS1='\[\033[0;32m\]\342\224\214\342\224\200\[\033[0;31m\][\[\033[0;39m\]\t \[\033[1;32m\]\u\[\033[01;33m\]@\[\033[01;96m\]\h\[\033[0;31m\]]\342\224\200[\[\033[0;32m\]\w\[\033[0;31m\]]\n\[\033[0;32m\]\342\224\224\342\224\200\342\224\200\342\225\274 \[\033[0m\]\[\033[01;33m\]\$ \[\033[0m\]'
export HISTORY_FILE=~/.$(date "+%F")_${HOSTNAME}_$(whoami)_jifeng.log
export PROMPT_COMMAND='{ date "+%Y-%m-%d %T PS:$SSH_TTY - $(history 1 | { read x cmd; echo "$cmd"; })"; } >> $HISTORY_FILE '
export HISTSIZE=1000000
export HISTFILESIZE=1000000
EOF
systemctl disable --now firewalld
systemctl enable --now chronyd
ln -sf ../usr/share/zoneinfo/Asia/Shanghai /etc/localtime
cd /etc/sysconfig/network-scripts/
rm -f $(ls | grep "ens")
grep -q "ifnames" /etc/default/grub
if [ $? -ne 0 ]; then
sed -ri.bak '/CMDLINE/s/"$/ net.ifnames=0 biosdevname=0"/' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg
fi
hostnamectl set-hostname ${Name}${Host_nu}
cat > ~/.vimrc <<EOF
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8
set autoindent " 打开自动缩进
set smartindent " 打开智能缩进
set smarttab
set incsearch " 开启实时搜索功能(字串随你每输入一个字符不断更新)
set ignorecase " 搜索时大小写不敏感,搜索小写可以匹配大写
set smartcase " 搜索大写只匹配大写
set wildmenu " vim 自身命令行模式智能补全
syntax on " 语法高亮
set expandtab " Tab 转换为空格
set tabstop=4 " Tab 转换为 4 个字符位
set softtabstop=4
set shiftwidth=4
set nu
set listchars=tab:»■,trail:■ " 将行末的空格或TAB显示为方块
set list
" set mouse=a
" set nocompatible " 关闭与vi的命令兼容
" inoremap ( ()<ESC>i
" inoremap [ []<ESC>i
" inoremap { {}<ESC>i
" inoremap < <><ESC>i
" inoremap " ""<ESC>i
" inoremap ' ''<ESC>i
" 符号补全
EOF
\cp ~/.vimrc /etc/skel/
history -c
> ~/.bash_history