#!/bin/bash
# 描述: CentOS 初始化脚本 # 加载配置文件
if [ -n "${1}" ];then
/bin/sh ${}
fi # 可接受配置(shell 变量格式)
# INIT_HOSTNAME 主机名, 默认为 localhost
# INIT_NTPSERVER ntp 服务器, 默认为 ntp1.aliyun.com
# INIT_DNS1 dns 服务器
# INIT_DNS2
# INIT_DNS3 # INIT_ZABBIX_AGENT 是否安装 zabbix agent, 默认为 yes
# INIT_ZAB_VERSION zabbix agent 的版本, 默认为 3.4.
# INIT_ZAB_SERVER zabbix server 的地址, 默认为 192.168.0.112
# INIT_ZAB_DOWNLOAD zabbix agent 的下载地址, 默认为阿里的 yum 仓库 # INIT_SSH_PORT ssh 监听端口, 默认
# INIT_SSH_DNS 是否启用 ssh dns 反解, 默认 no
# INIT_SSH_ROOT_LOGIN 是否允许 root 用户登录, 默认 yes HOSTNAME=${INIT_HOSTNAME:-'localhost'}
NTPSERVER=${INIT_NTPSERVER:-'ntp1.aliyun.com'}
DNS1=${INIT_DNS1:-'114.114.114.114'}
DNS2=${INIT_DNS2:-'223.5.5.5'}
DNS3=${INIT_DNS3:-'8.8.8.8'} ZABBIX_AGENT=${INIT_ZABBIX_AGENT:-'yes'}
ZABBIX_SERVER=${INIT_ZABBIX_SERVER:-'192.168.0.112'}
ZABBIX_VERSION=${INIT_ZABBIX_VERSION:-'3.4.11'}
ZABBIX_DOWNLOAD=${INIT_ZABBIX_DOWNLOAD:-'https://mirrors.aliyun.com/zabbix/zabbix/'} SSH_PORT=${INIT_SSH_PORT:-''}
SSH_DNS=${INIT_SSH_DNS:-'no'}
SSH_ROOT_LOGIN=${INIT_SSH_ROOT_LOGIN:-'yes'} ping -c -w 114.114.114.114 &> /dev/null
if [ ${?} -ne ];then
echo "系统初始化必须能够连接 Internet 网络"
exit
else
echo "nameserver 114.114.114.114" > /etc/resolv.conf echo -e "\033[31m正在更新软件包\033[0m"
yum -y update &> /dev/null yum -y install wget &> /dev/null
if [ ${?} -ne ];then
echo -e "\033[31m安装wget失败, 退出${0}\033[0m"
exit
fi
fi set_service() {
setenforce
sed -i 's#^SELINUX=.*#SELINUX=disabled#' /etc/sysconfig/selinux
sed -i 's#^SELINUX=.*#SELINUX=disabled#' /etc/selinux/config systemctl disable firewalld postfix acpid ip6tables mcelogd mdmonitor rpcbind rpcgssd &> /dev/null
systemctl disable rpcidmapd auditd haldaemon lldpad atd kdump netfs nfslock openct &> /dev/null
systemctl enable sshd crond &> /dev/null
} install_package() {
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.back
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo &> /dev/null
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo &> /dev/null
echo -e "\033[31m正在安装常用软件包\033[0m"
yum -y install vim lsof zip strace openssl openssl-devel gcc gcc-c++ cmake bind-utils libxml2-devel net-tools sysstat &> /dev/null
yum -y install ntpdate curl telnet lbzip2 bzip2 bzip2-devel pcre pcre-devel zlib-devel python-devel lrzsz man &> /dev/null
} install_zabbix_agent() {
[ ${ZABBIX_AGENT} != 'yes' ] && return echo -e "\033[31m正在安装zabbix-agent\033[0m"
cd /tmp/
ZAB_DOWNLOAD=${ZABBIX_DOWNLOAD}
ZAB_VERSION=${ZABBIX_VERSION}
VERSION=$(echo "${ZAB_VERSION}"|cut -c-)
wget ${ZAB_DOWNLOAD}${VERSION}/rhel//x86_64/zabbix-agent-${ZAB_VERSION}-.el7.x86_64.rpm &> /dev/null
yum -y localinstall zabbix-agent-${ZAB_VERSION}-.el7.x86_64.rpm &> /dev/null
rm -f zabbix-agent-${ZAB_VERSION}-.el7.x86_64.rpm sed -i "s#^Server=.*#Server=${ZABBIX_SERVER}#" /etc/zabbix/zabbix_agentd.conf
sed -i "s#^ServerActive=.*#ServerActive=${ZABBIX_SERVER}#" /etc/zabbix/zabbix_agentd.conf systemctl enable zabbix-agent &> /dev/null
systemctl start zabbix-agent &> /dev/null || echo -e "\033[31m安装zabbix-agent失败\033[0m" } init_system() {
hostnamectl set-hostname ${HOSTNAME}
timedatectl set-timezone Asia/Shanghai
echo "* * * * * /usr/sbin/ntpdate ${NTPSERVER}" > /var/spool/cron/root
echo "nameserver ${DNS1}" > /etc/resolv.conf
echo "nameserver ${DNS2}" >> /etc/resolv.conf
echo "nameserver ${DNS3}" >> /etc/resolv.conf
chattr +i /etc/resolv.conf
echo 'LANG="en_US.UTF-8"' > /etc/locale.conf
echo 'export LANG="en_US.UTF-8"' >> /etc/profile.d/custom.sh
} set_kernel_parameter() {
cat > /etc/sysctl.conf << EOF
fs.file-max =
kernel.sysrq =
kernel.core_uses_pid =
kernel.msgmnb =
kernel.msgmax =
kernel.shmmax =
kernel.shmall =
net.ipv6.conf.all.disable_ipv6 =
net.ipv6.conf.default.disable_ipv6 =
net.ipv4.icmp_echo_ignore_broadcasts =
net.ipv4.icmp_ignore_bogus_error_responses =
net.ipv4.ip_forward =
net.ipv4.conf.all.send_redirects =
net.ipv4.conf.default.send_redirects =
net.ipv4.conf.all.rp_filter =
net.ipv4.conf.default.rp_filter =
net.ipv4.conf.all.accept_source_route =
net.ipv4.conf.default.accept_source_route =
net.ipv4.tcp_syncookies =
net.ipv4.tcp_max_tw_buckets =
net.ipv4.tcp_sack =
net.ipv4.tcp_window_scaling =
net.ipv4.tcp_rmem =
net.ipv4.tcp_wmem =
net.ipv4.tcp_max_orphans =
net.ipv4.tcp_max_syn_backlog =
net.ipv4.tcp_timestamps =
net.ipv4.tcp_synack_retries =
net.ipv4.tcp_syn_retries =
net.ipv4.tcp_tw_recycle =
net.ipv4.tcp_tw_reuse =
net.ipv4.tcp_mem =
net.ipv4.tcp_fin_timeout =
net.ipv4.tcp_keepalive_time =
net.ipv4.ip_local_port_range =
net.ipv4.conf.all.accept_redirects =
net.ipv4.conf.default.accept_redirects =
net.ipv4.conf.all.secure_redirects =
net.ipv4.conf.default.secure_redirects =
net.core.wmem_default =
net.core.rmem_default =
net.core.rmem_max =
net.core.wmem_max =
net.core.netdev_max_backlog =
EOF
} set_system_limit() {
cat >> /etc/security/limits.conf <<EOF
* soft nproc
* hard nproc
* soft nofile
* hard nofile
EOF
} set_history() {
cat >> /etc/profile.d/custom.sh <<EOF
USER_IP=$(who -u am i >/dev/null| awk '{print $NF}'|sed -e 's/[()]//g')
[ -z ${USER_IP} ] && USER_IP=${hostname}
export HISTTIMEFORMAT="%F %T ${USER_IP} "
shopt -s histappend
export PROMPT_COMMAND="history -a; history -c; history -r; ${PROMPT_COMMAND}"
EOF
} # 如果升级失败造成的影响较大, 建议管理员手动升级
# update_openssh() {
# [ ${UPDATE_OPENSSH} == 'no' ] && return
# cd /tmp/
# yum -y install cmake gcc zlib-devel openssl-devel pam-devel wget
# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.back # wget https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.5p1.tar.gz
# tar xf openssh-.5p1.tar.gz && cd openssh-.5p1 # ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam \
# --with-zlib --with-openssl-includes=/usr --with-privsep-path=/var/lib/sshd # [ ${?} -ne ] && echo "升级 openssh 失败" >> system_init.log && return
# make || echo "升级 openssh 失败" >> system_init.log && return
# make install || echo "升级 openssh 失败" >> system_init.log # cp /etc/ssh/sshd_config /etc/ssh/sshd_config.back2
# echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config
# echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
# sed -i 's#GSSAPIAuthentication.*##' /etc/ssh/sshd_config
# sed -i 's#GSSAPICleanupCredentials.*##' /etc/ssh/sshd_config
# } set_openssh() {
echo "Port ${SSH_PORT}" >> /etc/ssh/sshd_config
[ ${SSH_DNS} != 'yes' ] && echo "UseDNS no" >> /etc/ssh/sshd_config
[ ${SSH_ROOT_LOGIN} == 'no' ] && sed -i 's/^#PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
} set_nic() {
grub_cinfig='GRUB_CMDLINE_LINUX="crashkernel=auto ipv6.disable=1 net.ifnames=0 rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"'
sed -i "s#GRUB_CMDLINE_LINUX.*#${grub_cinfig}#" /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg &> /dev/null || echo -e "\033[31m修改grub失败\033[0m"
} set_service
install_package
install_zabbix_agent
init_system
set_kernel_parameter
set_system_limit
set_history
set_openssh
set_nic echo -e "\033[32m${0} 执行完毕, 请确认无误之后执行 reboot 重启系统\033[0m"

centos7初始化脚本(转)的更多相关文章

  1. Centos7初始化脚本

    今天分享一个自己写的一个初始化的小脚本. 编写初始化系统要考虑到系统的版本问题,现在用的比较多的就是centos6和centos7,所以首先要判断一下系统的版本. cat /etc/redhat-re ...

  2. centos7 初始化脚本

    #!/bin/bash # 时间: 2018-11-21 # 作者: HuYuan # 描述: CentOS 7 初始化脚本 # 加载配置文件 if [ -n "${1}" ];t ...

  3. centos7 系统初始化脚本

    现在自己的本地虚拟机系统,直接安装的是centos7.2 mini版,安装完成发现好多东西都没有安装,所以写了一个简单的系统初始化脚本,让自己可以省一些力气,哈哈 人懒主要是. 下面贴出写的脚本,脚本 ...

  4. Centos7系统初始化脚本

    前言: 因公司业务增加,陆续新增服务器,时不时的来几台,手动地一台台对服务器初始化操作感觉太麻烦. 于是乎,根据初始化需求整合了一个初始化脚本,实现批量脚本初始化操作. 说明: 本脚本根据自身需求编写 ...

  5. centos7最小安装初始化脚本

    #!/bin/bash #zhangsen #lovexlzs@qq.com if [[ "$(whoami)" != "root" ]]; then exit ...

  6. centos7初始化bashshell脚本

    centos7初始化bashshell脚本 #!/bin/bash if [[ "$(whoami)" != "root" ]]; then echo &quo ...

  7. 分享我自己的一个最小化安装CentOS6的初始化脚本

    在自己的虚拟机上使用的基于CentOS6的系统初始化脚本 #!/bin/bash # #Filename:system_init.sh #Description:系统安装完成后,对系统进行一些配置,以 ...

  8. centos 7 初始化脚本

    #!/bin/bash # 时间: 2018-11-21 # 作者: HuYuan # 描述: CentOS 7 初始化脚本 # 加载配置文件 if [ -n "${1}" ];t ...

  9. liunx用户环境初始化脚本

          liunx用户环境初始化脚本 编写生成脚本基本格式,包括作者,联系方式,版本,时间,描述等 [root@magedu ~]# vim .vimrc set ignorecase set c ...

随机推荐

  1. 剑指Offer(4)——替换空格

    题目: 请实现一个函数,把字符串中的每个空格替换成"%20".例如输入“We are happy.”,则输出“We%20are%20happy.”. 思路: 如果按照顺序从前往后依 ...

  2. k8s基础环境搭建

    环境准备 服务器之间时间同步 1. 关闭防火墙 systemctl stop firewalld setenforce 0 2. 设置yum源   三台机器都要设置一个master两个node节点 下 ...

  3. base全家桶的安装使用方法

    base编码是Binary-to-text encoding的一种实现方法,它可以把二进制数据(含不可打印的字符)编码成可打印字符序列. 本文会不定时收录“base全家桶”:base64.base32 ...

  4. 利用Filter和HttpServletRequestWrapper实现请求体中token校验

    先说一下项目的背景,系统传参为json格式,token为其中一个必传参数,此时如果在过滤器中直接读取request,则后续controller中通过RequestBody注解封装请求参数是会报stre ...

  5. linux之find的使用

    基本语法 find [查找目录] [选项] [查找规则] [查找完后的操作] 即:find pathname -option -condition [-print -exec -ok …] 选项参数 ...

  6. LeetCode 754. Reach a Number

    754. Reach a Number(到达终点数字) 链接:https://leetcode-cn.com/problems/reach-a-number/ 题目: 在一根无限长的数轴上,你站在0的 ...

  7. WebSocket协议探究(序章)

    一 WebSocket协议基于HTTP和TCP协议 与往常一样,进入WebSocket协议学习之前,先进行WebSocket协议抓包,来一个第一印象. WebSocket能实现客户端和服务器间双向.基 ...

  8. web中间件

    0x00 Web中间件概述 通俗来说,中间件是提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通.Apache的Tomcat.IBM公司的WebSphere.BEA公司的WebLogic ...

  9. MVC框架+vue+elementUI

    用自动化构建做的vue项目,因为是动态加载数据,在SEO优化时一直不如意,于是我们换了框架,用MVC框架,做成静态页面,但是原来的代码都是用vue和elementUI,为了快速的复用原来的代码,于是在 ...

  10. 用javafx webview 打造自己的浏览器

    背景 项目需要做一个客户端的壳,内置浏览器,访问指定 的url 采用技术 java 1.8 开始吧! java环境配置略 hello world import javafx.application.A ...