zoukankan      html  css  js  c++  java
  • centos7虚拟机初始化脚本

    #!/bin/bash
    #**************************************************************
    #Author:                     sissi
    #QQ:                         1755639522
    #Date:                       2020-02-29
    #FileName:                   reset.sh
    #URL:                        https://blog.51cto.com/14012942
    #Description:                The test script
    #************************************************************
    #set -e
    RED="33[0;31m"
    GREEN="33[0;32m"
    NO_COLOR="33[0m"
    
    # 修改别名
    modify_alias() {
    cat >> ~/.bashrc <<EOF
    alias cdnet='cd /etc/sysconfig/network-scripts/'
    alias editnet='vim /etc/sysconfig/network-scripts/ifcfg-ens33'
    alias rm='rm -i'
    alias scandisk="echo ' - - - ' > /sys/class/scsi_host/host0/scan;echo ' - - - ' > /sys/class/scsi_host/host1/scan;echo ' - - - ' > /sys/class/scsi_host/host2/scan"
    EOF
    }
    
    # 修改命令提示符
    modify_PS1() {
        echo 'PS1="[e[1;34m][u@h W]\$[e[0m] "' >> /etc/profile.d/env.sh
    }
    
    # 安装基本软件
    install_software() {
        yum install   gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl  openssl-devel systemd-devel zlib-devel  vim lrzsz tree screen  lsof tcpdump wget  ntpdate net-tools iotop bc  zip unzip nfs-utils -y
    }
    
    # 替换yum源
    replace_yum() {
        #wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
        curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
        sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
        #wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
        curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
        yum makecache
    }
    
    # vim
    # vimrc复制过来
    modify_vimrc() {
    cat > ~/.vimrc <<EOF
    set ignorecase
    set cursorline
    set autoindent
    set ai
    autocmd BufNewFile *.sh exec ":call SetTitle()"
    
    func SetTitle()
            if expand("%:e") == 'sh'
            call setline(1,"#!/bin/bash")
            call setline(2,"#**************************************************************")
            call setline(3,"#Author:                     Linus")
            call setline(4,"#QQ:                         599503252")
            call setline(5,"#Date:                       ".strftime("%Y-%m-%d"))
            call setline(6,"#FileName:                   ".expand("%"))
            call setline(7,"#URL:                        https://blog.51cto.com/14012942")
            call setline(8,"#Description:                Initialize the new server")         
            call setline(9,"#Copyright (C):              ".strftime("%Y")." Copyright ©  站点名称  版权所有")
            call setline(10,"#************************************************************")
            call setline(11,"")
            endif
    endfunc
    autocmd BufNewFile * normal G
    EOF
    }
    
    # 关闭selinux和firewalld
    iptables_selinux_stop() {
        sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
        setenforce 0
    
        systemctl stop firewalld
        systemctl disable firewalld
    }
    
    # 判断是不是root
    judge_root() {
        [ $(id -u) != "0" ] && { echo -e "${RED}Error:${NO_COLOR} You must be root to run this script."; exit 1; }   
    }
    
    # 判断是不是CentOS7
    Check_release() {
        if [ -f /etc/redhat-release ];then
            release="centos"
            version=`sed -r 's/.* ([0-9]+)..*/1/' /etc/redhat-release`
        if [ "$version" = "7" ];then
            echo "Current release: CentOS7."
        else {
            echo -e "[${RED}Error${NO_COLOR}] This script can only be running on CentOS7."
            exit 1
        }
        fi
        else {
            echo -e "[${RED}Error${NO_COLOR}] This script can only be running on CentOS7."
        exit 1
        }
        fi
    }
    
    ########################时区调整########################
    timezone_adjust(){
        ln -sf  /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    }
    
    #修改网卡为eth0
    modify_eth_card() {
       ip a | grep -q eth0
       if [ "$?" -eq 1 ];then
           sed -ri '/^GRUB_CMDLINE/s/(.*)"/1 net.ifnames=0"/' /etc/default/grub
           grub2-mkconfig -o /boot/grub2/grub.cfg
       fi
    }
    
    #自动补全
    bash_completion() {
        yum install bash-completion -y
        source /usr/share/bash-completion/bash_completion
    }
    
    #时间同步
    time_sync(){
        yum install chrony -y
        sed '/^server/s/^/#/' /etc/chrony.conf -i
        sed '1a server ntp.aliyun.com iburst' /etc/chrony.conf -i
        sed '1a server 0.cn.pool.ntp.org iburst' /etc/chrony.conf -i
        sed '1a server ntp1.aliyun.com iburst' /etc/chrony.conf -i
        systemctl restart chronyd
        systemctl enable chronyd
        # echo '*/30 * * * * /usr/sbin/ntpdate ntp.aliyun.com &>/dev/null' >> /var/spool/cron/root
    }
    
    #ssh调优
    ssh_adjust(){
        cp /etc/ssh/sshd_config{,_bak}
        sed '/^GSSAPIAuthentication/d' /etc/ssh/sshd_config -i
        sed '/^UseDNS/d' /etc/ssh/sshd_config -i
        echo "GSSAPIAuthentication no" >> /etc/ssh/sshd_config
        echo "UseDNS no" >> /etc/ssh/sshd_config
        systemctl restart sshd
    }
    
    #最大文件打开数
    limits_tune(){
        echo '
    *   soft nofile 128000
    *   hard nofile 256000
    
    root soft nofile 128000
    root hard nofile 256000
    ' >> /etc/security/limits.conf
    }
    
    main() {
        judge_root
        Check_release
        replace_yum
        install_software
        iptables_selinux_stop
        modify_alias
        modify_vimrc
        timezone_adjust
        time_sync
        limits_tune
        ssh_adjust 
        modify_PS1
        modify_eth_card
        bash_completion
    }
    
    main

    链接:https://blog.51cto.com/14012942/2427695
    ‘真实的’活着
  • 相关阅读:
    Redhat6.4安装MongoDBv3.6.3
    windows模糊查询指定进程是否存在
    Linux普通用户不能使用TAB键、上下键
    零基础Python爬虫实现(百度贴吧)
    零基础Python爬虫实现(爬取最新电影排行)
    让bat批处理后台运行,不显示cmd窗口(完全静化)
    根据进程名监控进程(邮件提醒)
    android 开发中,必须要注意的知识点. (持续更新)
    Android上传文件至服务器
    为应用添加多个Activity与参数传递
  • 原文地址:https://www.cnblogs.com/chenxi-hxl/p/12382896.html
Copyright © 2011-2022 走看看