#!/bin/bash
#time 20161122
#2016-11-30 by innocence_caosm
#此脚本在centos6.8上面试运行没有问题,其他版本慎用!!!
#注意:
#1、缩进问题
#2、严谨性
#3、精简至上原则
Ipaddr(){
echo -e "\033[32;1m========================配置ip地址以及主机名称======================================\033[0m"
read -p "请输入你的ip地址:" IPADDR
read -p "请输入你的子网掩码:" NETMASK
read -p "请输入你的网关地址:" GATEWAY
read -p "请输入你的DNS1:" DNS1
sed -i '/^ONBOOT/s/no/yes/' /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i '/^BOOTPROTO/s/dhcp/static/' /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i "/^IPADDR/s/[0-9].\+/$IPADDR/ " /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i "/^NETMASK/s/[0-9].\+/$NETMASK/ " /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i "/^GATEWAY/s/[0-9].\+/$GATEWAY/ " /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i "/^DNS1/s/[0-9].\+/$DNS1/ " /etc/sysconfig/network-scripts/ifcfg-eth0
service network restart >&/dev/null
ping -c 3 -w 5 www.baidu.com >&/dev/null
if [[ $? != 0 ]];then
echo " 不能上网请检查配置 "
else
echo -e "\033[32;1m=====================NetWork Already Configure Finish ============================\033[0m"
fi
sleep 2
}
Ip_hostname(){
echo -e "\033[32;1m==========================配置主机名称==============================================\033[0m"
read -p "请输入你的主机名称:" HOSTNAME
sed -i '3,$d' /etc/hosts
sed -i '2,$d' /etc/sysconfig/network
sed -i '/^HOSTNAME.*$/d' /etc/hosts
echo "HOSTNAME=$HOSTNAME" >> /etc/sysconfig/network
IPADDR=`ip a | grep "global eth0" | awk '{print $2}' | awk -F "/" '{print $1}'`
echo -e "$IPADDR\t$HOSTNAME" >>/etc/hosts
echo -e "\033[32;1m===========================主机名配置成功==========================================\033[0m"
echo ""
sleep 2
}
# yum_163
ConfigYum(){
echo -e "\033[32;1m===========================更新为国内YUM源==========================================\033[0m"
cd /etc/yum.repos.d/
ping -c 1 www.163.com>/dev/null
if [ $? -eq 0 ];then
mv CentOS6-Base-163.repo{,.$(date +%F)}
wget -q http://mirrors.163.com/.help/CentOS6-Base-163.repo >/dev/null
sleep 2
sed -i "s/\$releasever/6.8/g" CentOS6-Base-163.repo
#sed -i '/s/$releasever/6.8/g' CentOS6-Base-163.repo #此处可提升为判断系统版本号,给出不同的版本节点
else
echo "无法连接网络!!!!"
exit $?
fi
echo -e "\033[32;1m============================正在更新YUM源配置=======================================\033[0m"
yum clean all >>/dev/null
yum list >>/dev/null
#action "配置国内YUM完成" /bin/true
echo -e "\033[32;1m======================================配置YUM源完成===============================\033[0m"
echo ""
sleep 2
}
#time sync
SyncSysTime(){
echo -e "\033[32;1m=========================================配置时间====================================\033[0m"
\cp /var/spool/cron/root /var/spool/cron/root.$(date +%F) 2>/dev/null
NTPDATE=`grep ntpdate /var/spool/cron/root 2>/dev/null |wc -l`
if [ $NTPDATE -eq 0 ];then
echo "#times sync by lee at $(date +%F)" >>/var/spool/cron/root
echo "*/5 * * * * /usr/sbin/ntpdate time.windows.com >/dev/null 2>&1" >> /var/spool/cron/root
fi
#action "配置时间同步完成" /bin/true
echo -e "\033[32;1m=========================================配置时间完成====================================\033[0m"
echo ""
sleep 2
}
#Charset zh_CN.UTF-8
InitI18n(){
echo -e "\033[32;1m======================================更改为中文字符集===================================\033[0m"
\cp /etc/sysconfig/i18n /etc/sysconfig/i18n.$(date +%F)
echo "LANG="zh_CN.UTF-8"" >/etc/sysconfig/i18n
source /etc/sysconfig/i18n
echo '#cat /etc/sysconfig/i18n'
grep LANG /etc/sysconfig/i18n
#action "更改字符集zh_CN.UTF-8完成" /bin/true
echo -e "\033[32;1m====================================更改为中文字符集完成===================================\033[0m"
echo ""
sleep 2
}
#Close Selinux and Iptables
Firewall(){
echo -e "\033[32;1m======================================禁用SELINUX及关闭防火墙=============================\033[0m"
cp /etc/selinux/config /etc/selinux/config.$(date +%F)
/etc/init.d/iptables status >>/dev/null
if [ $? -eq 0 ];then #判断防火墙是否开启,开启时返回值是0
/etc/init.d/iptables stop >>/dev/null
fi
$(cat /etc/selinux/config |grep SELINUX=enforcing)
if [ $? -eq 0 ] ;then
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
fi
#getenforce
#action "禁用selinux及关闭防火墙完成" /bin/true
echo -e "\033[32;1m======================================禁用SELINUX及关闭防火墙完成=============================\033[0m"
echo ""
sleep 2
}
#menu2
menu2(){
while true
do
clear
cat << EOF
----------------------------------------
|****Please Enter Your Choice:[0-6]****|
----------------------------------------
(1) 配置ip地址以
(2) 配置为国内YUM源镜像
(3) 设置时间同步
(4) 配置中文字符集
(5) 禁用SELINUX及关闭防火墙
(6) 配置主机名称
(0) 返回上一级菜单
EOF
read -p "Please enter your Choice[0-6]: " input2
case "$input2" in
0)
clear
break
;;
1)
Ipaddr
;;
2)
ConfigYum
;;
3)
SyncSysTime
;;
4)
InitI18n
;;
5)
Firewall
;;
6)
Ip_hostname
;;
*)
Warning
;;
esac
done
}
#menu
main(){
while true
do
clear
echo "========================================"
echo ' Linux Optimization '
echo "========================================"
cat << EOF
|-----------System Infomation-----------
| DATE :$DATE
| HOSTNAME :$HOSTNAME
| USER :$USER
| IP :$IPADDR
| DISK_USED :$DISK_SDA
| CPU_AVERAGE:$cpu_uptime
----------------------------------------
|****Please Enter Your Choice:[1-3]****|
----------------------------------------
(1) 一键优化
(2) 自定义优化
(3) 退出
EOF
#choice
read -p "Please enter your choice[0-3]: " input1
case "$input1" in
1)
Ipaddr
ConfigYum
SyncSysTime
InitI18n
Firewall
Ip_hostname
;;
2)
menu2
;;
3)
clear
break
;;
*)
Warning
;;
esac
done
}
Warning(){
echo "----------------------------------"
echo "| Warning!!! |"
echo "| Please Enter Right Choice! |"
echo "----------------------------------"
sleep 2
((ErrorNo+=1))
if [ $ErrorNo -eq 3 ];then #判断错误次数,已达到自动退出目的
echo -e '\033[31;1mError So Much ,The Script Exiting!\033[0m'
sleep 5
exit
fi
clear
}
if $UID != 0 ;then
echo 'must use Root run this script!'
else
#获取一些初始变量,磁盘使用情况未配置
ErrorNo=0
DATE=$(date +%F)
IPADDR=`ifconfig |grep Bcast|awk '{print $2}'|awk -F: '{print $2}'`
DISK_SDA=`df -hT | grep '/$' | awk '{print $6}'`
cpu_uptime=`uptime|awk -F: '{print $4}'`
main
fi
转载于:https://blog.51cto.com/innocence/1878223