作者: 薄荷冰           Linux基础  |  网站架构  |  数据库  |  监控报警  |  shell系列  |  常用工具  |  常见问题


 

导航

 
#!/bin/bash
############################################################
# $Name:         system_optimization.lid
# $Version:      v1.0
# $Functions:
#     optimization_main(){
#         1 SELINUX_stop
#         2 Create_general_user
#         3 Security_display
#         4 DF_declare
#         5 Clear_mail_queue
#         6 Linux_update_time
#         7 Sysctl_set
#         8 Linux_charavter_set
#       # 9 Command_Move
#         10 All_Env_Set
#         11 mail_rc_set
#         12 general_user_shell_env
#         13 Hosts_declare
#         14 sshd_config_set
#         15 Set_hostname
#         16 Set_eth_0_1
#       # 17 Linux_service_init
#    }
# $Author:       Jeson Li
# $organization: www.lzbbg.cn
# $Create Date:  2017-03-10
# $Mail:         libobin@tom.com
# $Description:  Linux System  optimization Lib
################################################################
    local_MAC="$(ip addr show eth0|awk 'NR==2{print $2}')"
    eth1_profix='10.0.0.'
    eth0_profix="172.16.1."
    lb_haproxy_01_IP=3     ;  lb_haproxy_01="lb-haproxy-01"     ;  lb_haproxy_01_MAC="00:50:56:21:5e:03"
    lb_haproxy_02_IP=4     ;  lb_haproxy_02="lb-haproxy-02"     ;  lb_haproxy_02_MAC="00:50:56:21:5e:04"
    web_lnmp_01_IP=10      ;  web_lnmp_01="web-lnmp-01"         ;  web_lnmp_01_MAC="00:50:56:21:5e:10"
    web_lamp_02_IP=11      ;  web_lamp_02="web-lamp-02"         ;  web_lamp_02_MAC="00:50:56:21:5e:11"
    store_nfs_01_IP=30     ;  store_nfs_01="store-nfs-01"       ;  store_nfs_01_MAC="00:50:56:21:5e:30"
    store_rsync_01_IP=31   ;  store_rsync_01="store-rsync-01"   ;  store_rsync_01_MAC="00:50:56:21:5e:31"
    mysql_master_01_IP=50  ;  mysql_master_01="mysql-master-01" ;  mysql_master_01_MAC="00:50:56:21:5e:50"
    mysql_master_02_IP=51  ;  mysql_master_02="mysql-master-02" ;  mysql_master_02_MAC="00:50:56:21:5e:51"
    mysql_slave_01_IP=53   ;  mysql_slave_01="mysql-slave-01"   ;  mysql_slave_01_MAC="00:50:56:21:5e:53"
    mysql_proxy_01_IP=54   ;  mysql_proxy_01="mysql-proxy-01"   ;  mysql_proxy_01_MAC="00:50:56:21:5e:54"
    mysql_proxy_02_IP=55   ;  mysql_proxy_02="mysql-proxy-02"   ;  mysql_proxy_02_MAC="00:50:56:21:5e:55"
    cache_redis_01_IP=61   ;  cache_redis_01="cache-redis-01"   ;  cache_redis_01_MAC="00:50:56:21:5e:61"
    cache_redis_02_IP=62   ;  cache_redis_02="cache-redis-02"   ;  cache_redis_02_MAC="00:50:56:21:5e:62"
    mage_jump_01_IP=200    ;  mage_jump_01="mage-jump-01"       ;  mage_jump_01_MAC="00:50:56:21:5e:20"
    mage_monitor_01_IP=201 ;  mage_monitor_01="mage-monitor-01" ;  mage_monitor_01_MAC="00:50:56:21:5e:21"

    [  "$local_MAC" == "$lb_haproxy_01_MAC" ]      && { IPADDR=${lb_haproxy_01_IP}    ; HostName=${lb_haproxy_01}; }
    [  "$local_MAC" == "$lb_haproxy_02_MAC" ]      && { IPADDR=${lb_haproxy_02_IP}    ; HostName=${lb_haproxy_02}; }
    [  "$local_MAC" == "$web_lnmp_01_MAC" ]        && { IPADDR=${web_lnmp_01_IP}      ; HostName=${web_lnmp_01}; }
    [  "$local_MAC" == "$web_lamp_02_MAC" ]        && { IPADDR=${web_lamp_02_IP}      ; HostName=${web_lamp_02}; }
    [  "$local_MAC" == "$store_nfs_01_MAC" ]       && { IPADDR=${store_nfs_01_IP}     ; HostName=${store_nfs_01}; }
    [  "$local_MAC" == "$store_rsync_01_MAC" ]     && { IPADDR=${store_rsync_01_IP}   ; HostName=${store_rsync_01}; }
    [  "$local_MAC" == "$mysql_master_01_MAC" ]    && { IPADDR=${mysql_master_01_IP}  ; HostName=${mysql_master_01}; }
    [  "$local_MAC" == "$mysql_master_02_MAC" ]    && { IPADDR=${mysql_master_02_IP}  ; HostName=${mysql_master_02}; }
    [  "$local_MAC" == "$mysql_slave_01_MAC" ]     && { IPADDR=${mysql_slave_01_IP}   ; HostName=${mysql_slave_01}; }    
    [  "$local_MAC" == "$mysql_proxy_01_MAC" ]     && { IPADDR=${mysql_proxy_01_IP}   ; HostName=${mysql_proxy_01}; }
    [  "$local_MAC" == "$mysql_proxy_02_MAC" ]     && { IPADDR=${mysql_proxy_02_IP}   ; HostName=${mysql_proxy_02}; }    
    [  "$local_MAC" == "$cache_redis_01_MAC" ]     && { IPADDR=${cache_redis_01_IP}   ; HostName=${cache_redis_01}; }
    [  "$local_MAC" == "$cache_redis_02_MAC" ]     && { IPADDR=${cache_redis_02_IP}   ; HostName=${cache_redis_02}; }
    [  "$local_MAC" == "$mage_jump_01_MAC" ]       && { IPADDR=${mage_jump_01_IP}     ; HostName=${mage_jump_01}; }
    [  "$local_MAC" == "$mage_monitor_01_MAC" ]    && { IPADDR=${mage_monitor_01_IP}  ; HostName=${mage_monitor_01}; }

    export create_user_name="jeson"
    export user_passwd="123456"
    export uid="30325"
#######################################################################################################

# Create general user
Create_general_user(){
    useradd -u ${uid} ${create_user_name}
    echo "${user_passwd}"|passwd --stdin ${create_user_name}
    echo -e "${create_user_name}        ALL=(ALL)       NOPASSWD: ALL\nDefaults logfile=/var/log/sudo.log" >>/etc/sudoers
     visudo -c
 }

# Security display
Security_display(){
    > /etc/issue
    > /etc/issue.net
 }

# All user file discreption declare
DF_declare(){
    echo "*       -       nofile       65535" >> /etc/security/limits.conf
 }

# Cron Clear mail queue
Clear_mail_queue(){
    echo -e "# clean maildrop created date: $(date +%F) user: $(whoami)\n00 * * * * /usr/bin/rm -f /var/spool/postfix/maildrop/* &>/dev/null\n" >>/var/spool/cron/$(whoami)
 }

# Cron Linux update time
Linux_update_time(){
    echo -e "# system time update created date: $(date +%F) user: $(whoami)\n#*/5 * * * * /usr/sbin/ntpdate time.windows.com &>/dev/null\n*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null\n" >>/var/spool/cron/$(whoami)
 }

# /etc/sysctl.conf optimization
Sysctl_set(){
    cat >> /etc/sysctl.conf <<-EOF

        ###sysctl.conf modify in $(date +%F)###
        net.ipv4.tcp_fin_timeout = 2
        net.ipv4.tcp_tw_reuse = 1
        net.ipv4.tcp_tw_recycle = 1
        net.ipv4.tcp_syncookies = 1
        net.ipv4.tcp_keepalive_time = 600
        net.ipv4.ip_local_port_range = 4000 65535
        net.ipv4.tcp_max_syn_backlog = 16384
        net.ipv4.tcp_max_tw_buckets = 36000
        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
        ####################################
        net.core.wmem_default = 8388608
        net.core.rmem_default = 8388608
        net.core.wmem_max = 16777216
        net.core.rmem_max = 16777216
        ###iptables modify in $(date +%F)###
        net.nf_conntrack_max = 25000000
        net.netfilter.nf_conntrack_max = 25000000
        net.netfilter.nf_conntrack_tcp_timeout_established = 180
        net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
        net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
        net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
    EOF
    sysctl -p
 }

# SELINUX optimization
SELINUX_stop(){
    if [ $(grep "^SELINUX=" /etc/selinux/config) == "SELINUX=enforcing" ];then
        sed -i 's#SELINUX=enforcing#SELINUX=disabled#' /etc/selinux/config
        [ $(getenforce) == "Enforcing" ] && { setenforce 0 ; }
    fi
 }

# Linux character set suport for china
Linux_charavter_set(){
    cat > /etc/locale.conf <<-EOF
        LANG="en_US.UTF-8"
        #LANG="zh_CN.UTF-8"
    EOF
 }

# Command Move
Command_Move(){
    mkdir -p /My_tools
    chattr +i /etc/{passwd,passwd-,shadow,shadow-,group,group-,gshadow,gshadow-,inittab} && mv /usr/bin/{lsattr,chattr} /My_tools
    tar czf My_tools.tar.gz /My_tools && rm -f /My_tools/[!M]*
 }

# Declare all env variable
All_Env_Set(){
    cat >>/etc/profile<<-EOF

        # modify in $(date +%F)
        export HISTTIMEFORMAT="%F %T \$(whoami) " 
        export PROMPT_COMMAND='{ msg=\$(history 1 | { read x y; echo \$y; });logger "[euid=\$( whoami )]":\$(who am i):[\$(pwd)]"$msg"; }'
        export PS1='\[\e[32m\][\u\[\e[33m\]@\[\e[32m\]\H\[\e[35m\]\w/\[\e[32m\]]\\$\[\e[0m'
    EOF
 }

# Declare send mailbox 
mail_rc_set(){
    cat >> /etc/mail.rc <<-EOF

        # modify in $(date +%F)
        set bsdcompat
        set from=18978035799@189.cn
        set smtp=smtp.189.cn
        set smtp-auth-user=18978035799@189.cn
        set smtp-auth-password=lbb123456
        set smtp-auth=login
        # mail -s "Title" 1270963692@qq.com </etc/mail.rc
    EOF
}

# Set general user vim shell env
general_user_shell_env(){
    cp /etc/vimrc /home/${create_user_name}/.vimrc
    cat >> /home/${create_user_name}/.vimrc <<-EOF

        set smartindent
        set tabstop=4
        set shiftwidth=4
        set expandtab
        set softtabstop=4
    EOF
    sed -i 's#autocmd BufNewFile \*\.spec 0r .*#autocmd BufNewFile *.sh 0r ~/.vim_template.sh#g' /home/${create_user_name}/.vimrc 
    cat >> /home/${create_user_name}/.vim_template.sh <<-EOF
        #!/bin/bash
        ############################################################
        # \$Name:         commond.sh
        # \$Version:      v1.0
        # \$Function:     
        #
        #
        # \$Author:       Jeson Li
        # \$organization: www.lzbbg.cn
        # \$Create Date:  2017-03-10
# \$Mail: libobin@tom.com
# \$Description: ############################################################ export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin" Tik="\e[5m";Red="\e[31m";Grn="\e[32m";Ylw="\e[33m";Blu="\e[34m";Pup="\e[35m";Rst="\e[0m" # source /etc/rc.d/init.d/functions EOF chown -R ${create_user_name}.${create_user_name} /home/${create_user_name}/ } # Declare /etc/hosts file Hosts_declare(){ cat >> /etc/hosts <<-EOF ${eth0_profix}$lb_haproxy_01_IP $lb_haproxy_01 lb01.lzbbg.cn ${eth0_profix}$lb_haproxy_02_IP $lb_haproxy_02 lb02.lzbbg.cn ${eth0_profix}$web_lnmp_01_IP $web_lnmp_01 web01.lzbbg.cn ${eth0_profix}$web_lamp_02_IP $web_lamp_02 web02.lzbbg.cn ${eth0_profix}$store_nfs_01_IP $store_nfs_01 nfs01.lzbbg.cn ${eth0_profix}$store_rsync_01_IP $store_rsync_01 rsync01.lzbbg.cn ${eth0_profix}$mysql_master_01_IP $mysql_master_01 dbmaster01.lzbbg.cn ${eth0_profix}$mysql_master_02_IP $mysql_master_02 dbmaster02.lzbbg.cn ${eth0_profix}$mysql_slave_01_IP $mysql_slave_01 dbslave01.lzbbg.cn ${eth0_profix}54 ${mysql_proxy_01} myproxy01.lzbbg.cn ${eth0_profix}55 ${mysql_proxy_02} myproxy02.lzbbg.cn ${eth0_profix}$cache_redis_01_IP $cache_redis_01 cache01.lzbbg.cn ${eth0_profix}$cache_redis_02_IP $cache_redis_02 cache02.lzbbg.cn ${eth0_profix}$mage_jump_01_IP $mage_jump_01 jump.lzbbg.cn ${eth0_profix}$mage_monitor_01_IP $mage_monitor_01 monitor.lzbbg.cn zabbix.lzbbg.cn dbzabbix.lzbbg.cn download.lzbbg.cn ${eth0_profix}32 nfs_vip.lzbbg.cn ${eth0_profix}52 dbmaster_vip.lzbbg.cn ${eth0_profix}56 myproxy_vip56.lzbbg.cn ${eth0_profix}57 myproxy_vip57.lzbbg.cn ${eth0_profix}63 cache_vip.lzbbg.cn EOF } # Set /etc/ssh/sshd_config sshd_config_set(){ cat >> /etc/ssh/sshd_config <<-EOF # modify in $(date +%F) Port 52113 PermitRootLogin no PermitEmptyPasswords no GSSAPIAuthentication no UseDNS no # ListenAddress $(grep "$HostName" /etc/hosts|awk 'NR==1{print $1}') EOF systemctl restart sshd.service } # Set hostname Set_hostname(){ hostnamectl --static set-hostname $HostName echo "$HostName" >/etc/hostname } Set_eth_0_1(){ sed -i " s@BOOTPROTO=.*@BOOTPROTO=none@g s@ONBOOT=no@ONBOOT=yes@ " /etc/sysconfig/network-scripts/ifcfg-eth0 # Set eth0 and Create eth0 for static cat >> /etc/sysconfig/network-scripts/ifcfg-eth0 <<-EOF IPADDR=${eth0_profix}${IPADDR} NETMASK=255.255.255.0 DNS1=8.8.8.8 DNS2=8.8.4.4 EOF sed -i " s@BOOTPROTO=.*@BOOTPROTO=none@g s@ONBOOT=no@ONBOOT=yes@ " /etc/sysconfig/network-scripts/ifcfg-eth1 # Set eth1 and Create eth1 for static cat >> /etc/sysconfig/network-scripts/ifcfg-eth1 <<-EOF IPADDR=${eth1_profix}${IPADDR} NETMASK=255.255.255.0 GATEWAY=${eth1_profix}2 EOF ifdown eth1 ifup eth1 ifdown eth0 ifup eth0 sleep 5 } # Linux Open the machine need start services Linux_service_init(){ for service_name in $(systemctl list-unit-files|awk '/enabled/{print $1}') do systemctl disable $service_name systemctl stop $service_name done for service_name in rsyncd default.target rsyslog sshd crond systemd-readahead-collect systemd-readahead-replay systemd-readahead-drop multi-user.target do systemctl enable $service_name systemctl start $service_name done } optimization_main(){ SELINUX_stop Create_general_user Security_display DF_declare Clear_mail_queue Linux_update_time Sysctl_set Linux_charavter_set # Command_Move All_Env_Set mail_rc_set general_user_shell_env Hosts_declare sshd_config_set Set_hostname Set_eth_0_1 # Linux_service_init }

 

posted on 2018-12-27 19:53  薄荷冰  阅读(100)  评论(0)    收藏  举报