rocky9.x版本系统初始化配置
更换yum源
sed -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' -i.bak /etc/yum.repos.d/rocky*.repo
dnf makecache
vim init.sh
#!bin/sh
LOGINFO=init_install.log
function info(){
echo "已为您退出!若想继续请重新执行命令:'bash $0' 继续操作! "
return 2
}
function setNetwork(){
netfile=/etc/NetworkManager/system-connections/ens160.nmconnection
#找出系统发行版是什么
RELEASE=`cat /etc/redhat-release|awk '{print $1,$4}'|sed 's/[ .]//p' -n`
RELEASE_1=`echo ${RELEASE/.*/}`
#如果发行版为Rocky9版本,则开始设置ip
if [ "${RELEASE_1}" == "Rocky9" ]; then
read -p "确定更改网络配置信息么,是:y 按其他任意键退出: " yn
if [ "${yn}" == "y" ]; then
read -p "请输入你要设置的ip及掩码地址‘格式如 192.168.10.23/24 ’:" IP_netmask
read -p "请输入您要设置的网关‘ 格式如:192.168.10.1’:" GATWAY
read -p "请输入您要设置的DNS‘格式如 114.114.114.114': " DNS
#查看网络配置文件中ipv4 在哪一行
ipv4InNum=$( grep '\[ipv4\]' -n ${netfile} |awk -F ':' '{print $1}')
#根据ipv4所在行 即可知道ipv4下的method所在行
#删除method=auto
sed "$((${ipv4InNum}+1))d" ${netfile} -i
#在ipv4所在行下插入网络配置信息
sed "${ipv4InNum}a method=manual" ${netfile} -i
sed "$((${ipv4InNum}+1))a may-fail=false" ${netfile} -i
sed "$((${ipv4InNum}+2))a address1=${IP_netmask},${GATWAY}" ${netfile} -i
sed "$((${ipv4InNum}+3))a dns=${DNS}" ${netfile} -i
echo "---------网络配置成功!配置信息如下----------"
cat ${netfile}
echo "---------------------------------------------"
sleep 1
read -p "是否立即加载网络配置生效,如果否,则全部配置完成后重启服务器生效或者执行命令:nmcli connection reload /etc/NetworkManager/system-connections/ens160.nmconnection,然后再执行命令nmcli connection up ens160生效 是: y 否则任意键退出" yn
if [ "${yn}" == "y" ];then
echo "网络配置文件加载中..."
sleep 1
nmcli connection reload ${netfile}
echo "配置新ip即将生效,如果您正在使用远程工具登录请使用新的ip地址${IP_netmask}进行登录"
sleep 1
nmcli connection up ens160
else
return 0
fi
else
info
fi
fi
}
function setHostname(){
echo "优化2:确定要更改主机名么,是:y 按其他任意键退出"
read yn
if [ "${yn}" == "y" ]; then
echo "请输入您的主机名:"
read hostname
hostnamectl set-hostname ${hostname} &>> ${LOGINFO}
if [ $? -eq 0 ]; then
echo "主机名设置成功! 您的主机名:${hostname}"
return 0
else
echo "您的主机名设置失败,更多详细信息请查看日志文件${LOGINFO}"
return 1
fi
else
info
fi
}
function installTools(){
echo "您将下载的常用工具有:wget vim net-tools chrony lrzsz telnet nmap psmisc nc sshpass unzip"
echo "是否确认下载? 是:y 其他任意键退出"
read yn
if [ "${yn}" == "y" ]; then
yum install -y wget vim net-tools chrony lrzsz telnet nmap psmisc nc sshpass unzip &>> ${LOGINFO}
if [ "$?" -eq "0" ];then
echo "工具下载安装成功!"
return 0
else
echo "常用工具下载安装失败!详情请看文件${LOGINFO}"
return 1
fi
else
info
fi
}
function closeFirewalld(){
echo "确定要关闭防火墙么,是: y 按其他任意键退出"
read yn
if [ "${yn}" == "y" ];then
echo "防火墙关闭中..."
systemctl stop firewalld &>> ${LOGINFO}
if [ "$?" == "0" ]; then
echo "防火墙已关闭!"
return 0
else
echo "防火墙关闭失败!详情请看文件${LOGINFO}"
return 1
fi
else
info
fi
}
function closeSwap(){
echo "确定要关闭交换分区么?是: y 按其他任意键退出"
read yn
if [ "$yn" == "y" ];then
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab &>> ${LOGINFO}
if [ "$?" == "0" ]; then
echo "交换分区已关闭!"
return 0
else
echo "交换分区关闭失败!详情请看文件${LOGINFO}"
return 1
fi
else
info
fi
}
function setTabChar(){
echo "确定设置tab按键字符么?是:y 其他任意键退出"
read yn
if [ "$yn" == "y" ];then
read -p "请输入tab按键时的字符数:" CHARNUM
echo -e "set tabstop=${CHARNUM}\nset shiftwidth=${CHARNUM}" >> ~/.vimrc
if [ "$?" == "0" ]; then
echo "tab安键为${CHARNUM}个字符成功!"
return 0
fi
else
info
fi
}
function setFileTitle(){
read -p "确定设置新建文件时的文件头部信息? 是:y 其他任意键退出" yn
if [ "$yn" == "y" ];then
who=`whoami`
cat >> ~/.vimrc <<EOF
autocmd BufNewFile *.sh exec ":call AddTitleForShell()"
function AddTitleForShell()
call append(0,"#!/bin/bash")
call append(1,"# **********************************************************")
call append(2,"# * Author : ${who}")
call append(3,"# * Email : ${who}@163.com")
call append(4,"# * Create time : ".strftime("%Y-%m-%d %H:%M"))
call append(5,"# * Filename : ".expand("%:t"))
call append(6,"# * Description : ")
call append(7,"# **********************************************************")
endfunction
autocmd BufNewFile *.py exec ":call AddTitleForPython()"
function AddTitleForPython()
call append(0,"#!/usr/bin/python3")
call append(1,"# **********************************************************")
call append(2,"# * Author : Yonghai")
call append(3,"# * Email : Yonghai@163.com")
call append(4,"# * Create time : ".strftime("%Y-%m-%d %H:%M"))
call append(5,"# * Filename : ".expand("%:t"))
call append(6,"# * Description : ")
call append(7,"# **********************************************************")
endfunction
EOF
if [ "$?" == "0" ]; then
echo "新建文件头部信息设置成功!"
return 0
fi
else
info
fi
}
#功能选择
choice(){
echo "---------功能列表-----------"
echo "1:设置网络"
echo "2:设置主机名"
echo "3:下载常用工具"
echo "4:关闭防火墙"
echo "5:关闭交换分区"
echo "6:设置tab按键字符"
echo "7:设置新建文件头部信息"
echo "8:设置selinux"
echo "0:退出"
echo "----------------------------"
read -p "请输入您要进行操作的功能序号:" choice_num
}
choice
#功能执行
if [ ${choice_num} == 0 ];then
echo "正在退出!!"
sleep 1
exit 0
elif [ ${choice_num} == 1 ];then
setNetwork
elif [ ${choice_num} == 2 ];then
setHostname
elif [ ${choice_num} == 3 ];then
installTools
elif [ ${choice_num} == 4 ];then
closeFirewalld
elif [ ${choice_num} == 5 ];then
closeSwap
elif [ ${choice_num} == 6 ];then
setTabChar
elif [ ${choice_num} == 7 ];then
setFileTitle
else
echo -n "您输入有误!!"
info
fi
运行脚本
bash init.sh