服务器系统配置初始化shell脚本

#!/bin/bash
#设置时区并同步时间
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
if ! crontab -l | grep ntpdate &>/dev/null ; then
	(echo "* 1 * * * ntpdate time.windows.com >/dev/null 2>$1";crontab -l) | crontab
fi
#禁用selinux
sed -i '/SELINUX/{S/PERMISSIVE/DISABLED/}' /etc/selinux/config
#关闭防火墙
if egrep "7.[0-9]" /etc/redhat-release &>/dev/null; then
	systemctl stop firewalld
	systemctl disable firewalld
elseif egrep "6.[0-9]" /etc/redhat-release &>/dev/null;then
	service iptables stop
	chkconfig iptables off
fi

#历史命令显示操作时间
if ! grep HISTTIMEFORMAT /etc/bashrc; then 
	echo 'export HISTTIMEFORMAT="%F %T `whoami` "' >> /etc/bashrc
fi

#ssh超时时间
if ! grep "TMOUT=600" /etc/profile &>/dev/null; then
	echo "export TMOUT=600" >> /etc/profile
fi

#禁止root远程登录
sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config

#禁止定时任务发送邮件
sed -i 's/^MAILTO=root/MAILTO=""/' /etc/crontab

#设置最大打开文件数
if ! grep "* soft nofile 65535" /etc/security/limits.conf &>/dev/null; then
    cat >> /etc/security/limits.conf << EOF
    * soft nofile 65535
    * hard nofile 65535
    EOF
fi
#系统内核优化
#net.core.netdev_max_backlog 决定了,网络设备接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。
#net.ipv4.tcp_syncookies = 1表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭。
#net.ipv4.tcp_fin_timeout =20表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。
cat >> /etc/sysctl.conf << EOF
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_tw.buckets = 20480
net.core.netdev_max_backlog = 262144
net.ipv4.tcp_fin_timeout = 20
EOF

#安装系统性能分析工具及其他
yum install gcc make autoconf vim sysstat net.tools iostat iftop iotp lrzsz -y

 

你可能感兴趣的:(shell)