linux 系统初始化脚本

guiyun affiliate
#/bin/bash
# Name:initialization.sh
# Version:V1.0
# Type:Common Script
# Language:Bash Shell
# Date:2019-05-17
# Author:萧萧一风
# Email:77368447@qq.com
# QQ:77368447

# Determine whether the current user is an administrator.
if [ "$UID" -ne 0 ]
then
    echo "The Script Must Be An Administrator To Execute."
    exit 1
fi

# Source function library.
. /etc/rc.d/init.d/functions

# Variable definitions.
LANG=en
Ip=$(ifconfig eth0|awk -F"[ :]+" 'NR==2{print $4}')
Date=$(date +%F)
Host_Name=$(hostname)
Time_Out=15
Web="www.baidu.com"
Selinux_Status=$(getenforce)
Selinux_File="/etc/selinux/config"
Porfile="/etc/profile"
Bashrc_File="/etc/bashrc"
Limits_File="/etc/security/limits.conf"
Base_Repo="/etc/yum.repos.d/CentOS-Base.repo"
Epel_Repo="/etc/yum.repos.d/epel.repo"
Motd_File="/etc/motd"
Sysctl_File="/etc/sysctl.conf"
Ssh_File="/etc/ssh/sshd_config"
Sshd="/etc/init.d/sshd"

# Check whether the network is normal.
function Network() {
         Code=$(curl -I -s --connect-timeout $Time_Out -w "%{http_code}\n" $Web -o /dev/null)
         if [ "$Code" = "200" ]
         then
             echo "Check The Network Is Normal."
         else
             echo "Check The Network Is Not Normal."
             exit 2
         fi
     }

# Close selinux service.
function Selinux() {
         if [ "$Selinux_Status" = "permissive" -o "$Selinux_Status" = "disabled" ]
         then
             echo "Selinux Service Is Not Running."
         else
             setenforce 0 && sed -i "s#SELINUX=enforcing#SELINUX=disabled#g" $Selinux_File
         fi
     }

# Close iptables service.
function Iptables() {
         /etc/init.d/iptables status &>/dev/null
         RETVAL=$?
         if [ "$RETVAL" -eq 0 ]
         then
             /etc/init.d/iptables stop &>/dev/null && chkconfig --level 3 iptables off
         else
             echo "Iptables Service Is Not Running."
         fi
     }

# Resolv system hostname.
function Resolv() {
         echo -e "$Ip \t $Host_Name" >> /etc/hosts
         ping -c 1 -w 10 $Host_Name &>/dev/null
         RETVAL=$?
         if [ "$RETVAL" -eq 0 ]
         then
             echo "Resolv Hostname Successful."
         else
             echo "Resolv Hostname Faile."
         fi
     }

# Optimize boot service.
function Chkconfig() {
         for services in `chkconfig --list|grep "3:on"|awk '{print $1}'|egrep -v "crond|network|rsyslog|sshd|sysstat"`
         do
             chkconfig --level 3 $services off
         done
     }

# Set the number of system history command records and login timeout.
function Tty() {
         sed -i 's#HISTSIZE=1000#HISTSIZE=100#g' $Porfile
         sed -i '/^HISTSIZE/a\HISTFILESIZE=100\nHISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "\nTMOUT=300' $Porfile
         source $Porfile
     }

# Set the system alias.
function Alias() {
         alias grep='grep --color=auto'
         alias egrep='egrep --color=auto'
         alias ll='ls -l --color=auto --time-style=long-iso'
         alias vi='vim'
         cat >> $Bashrc_File<<EOF
alias grep='grep --color=auto'
alias egrep='egrep --color=auto'
alias ll='ls -l --color=auto --time-style=long-iso'
alias vi='vim'
EOF
         source $Bashrc_File
     }

# Set the system to open the file descriptor.
function Descriptor() {
         echo "*               -       nofile          65535" >> $Limits_File
         ulimit -SHn 65535
     }

# Set the network yum repository.
function Yum() {
         [ -f "$Base_Repo" ] && cp -a $Base_Repo ${Base_Repo}_$Date
         wget -q -O $Base_Repo http://mirrors.aliyun.com/repo/Centos-6.repo
         wget -q -O $Epel_Repo http://mirrors.aliyun.com/repo/epel-6.repo
         yum makecache &>/dev/null
         RETVAL=$?
         if [ "$RETVAL" -eq 0 ]
         then
             echo "Set The Network Yum Repository Successful."
         else
             echo "Set The Network Yum Repository Faile."
         fi
     }

# Hide system version information and set login prompts.
function Hideversion() {
         [ -f /etc/issue ] && > /etc/issue
         [ -f /etc/issue.net ] && > /etc/issue.net
         cat >> $Motd_File<<EOF
Welcome To Join The Keywa Family, Please Save Your Account And Password, If You Have Any Questions, Please Contact Your System Administrator.
Mail: 77368447@qq.com
QQ: 991395975
EOF
     }

# Set the system kernel parameters.
function Kernel() {
         cat >> $Sysctl_File<<EOF

# By Kevin At 2019-05-17
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 4000 65000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384
EOF
         sysctl -p &>/dev/null
     }

# Optimizing SSH services.
function Ssh() {
         [ -f "$Ssh_File" ] && cp -a $Ssh_File ${Ssh_File}_$Date
         sed -i -e "s@^#Port 22@Port 48817@g" -e "s@^#ListenAddress 0.0.0.0@ListenAddress $Ip@g" -e "s@^#UseDNS yes@UseDNS no@g" -e "s@^#PermitRootLogin yes@PermitRootLogin no@g" -e "s@GSSAPIAuthentication yes@GSSAPIAuthentication no@g" $Ssh_File
         [ -x "$Sshd" ] && $Sshd restart &>/dev/null
     }

# Create a remote connection account.
function Adduser() {
         useradd -c "For Remote Login Account" keywa1020b2b
         RETVAL=$?
         if [ "$RETVAL" -eq 0 ]
         then
             echo "axbc1kof"|passwd --stdin keywa1020b2b &>/dev/null
         fi
     }

# Synchronize the network time server.
function Ntptime() {
         ntpdate 0.pool.ntp.org &>/dev/null && hwclock &>/dev/null
         cat >> /var/spool/cron/root<<EOF
####Synchronization Network Time Server####
*/5 * * * * /usr/sbin/ntpdate 0.pool.ntp.org &>/dev/null
EOF
     }

# Main function.
function Main() {
         Network
         Selinux
         Iptables
         Resolv
         Chkconfig
         Tty
         Alias
         Descriptor
         Yum
         Hideversion
         Kernel
         Ssh
         Adduser
         Ntptime
     }

# Execute the main function.
Main

guiyun affiliate

作者头像
南宫俊逸创始人

君子好学,自强不息~

上一篇:nginx.conf 配置文件
下一篇:CCKiller:Linux轻量级CC攻击防御工具,秒级检查、自动拉黑和释放 (网摘)

相关推荐

4

发表评论