服务器centos6初始化脚本,包含几个方面:
修改主机名
添加用户秘钥
ssh 端口修改
ulimit值修改
防火墙修改
添加追踪日志
时间同步
安装一些基础软件包
nagios客户端安装
zabbix客户端安装
salt客户端安装
第一个脚本:
#!/bin/bash
# DATE 2017-02-03 17:01
SPORT=51029
SURL=http://XX.XX.XX.XX
IPTBL="/etc/sysconfig/iptables"
AUTH="authorized_keys"
MD5_DIR="/root/.md5_back"
userlist="user1 user2 user3"
sudouser="user1 user2 user3"
MINION_PATH="/etc/salt/minion"
MASTER="XX.XX.XX.XX"
LANIP=`ifconfig eth0 | grep inet | awk ‘{print $2}‘`
NagiosServer="XX.XX.XX.XX"
TNagios="XX.XX.XX.XX"
NagiosDir="/etc/nagios/nrpe.cfg"
SCRIPT="/mnt/log/script"
if [ ! -d "$MD5_DIR" ];then
mkdir -p $MD5_DIR
fi
function get_md5() {
md5_value=`echo -n $1|md5sum|cut -d‘ ‘ -f1`
echo "$1 -----> $md5_value" >>$MD5_DIR/command_md5.log
}
get_md5 /bin/ls
get_md5 /bin/cp
get_md5 /bin/vi
get_md5 /usr/bin/crontab
get_md5 /etc/passwd
get_md5 /etc/crontab
get_md5 /usr/bin/last
get_md5 /usr/bin/lastlog
INIT(){
NAME=`hostname`
sed -i ‘/‘$NAME‘/d‘ /etc/hosts
NEWNAME=$1
if [ $# -eq 1 -a ! -z "$NEWNAME" ];then
echo "Setting HOSTNAME"
sed -i "s/$NAME/$NEWNAME/" /etc/sysconfig/network
hostname $NEWNAME
else
echo "The hostname of this server must not be empty"
exit 1
fi
#修改/etc/hosts 文件的主机名
echo "$LANIP $NEWNAME" >> /etc/hosts
###sed -i ‘s/localhost.localdomain/$HNAME/g‘ /etc/sysconfig/network
sed -i ‘s/enforcing/disabled/g‘ /etc/sysconfig/selinux
#### limit 值修改
cat >> /etc/security/limits.conf <<EOF
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
EOF
useradd -u 1001 -G wheel user1
useradd -u 1002 -G wheel user2
useradd -u 1003 -G wheel user3
sed -i "/# User_Alias ADMINS = jsmith, mikem/ aUser_Alias ADMINS = $sudouser" /etc/sudoers
sed -i ‘/^root/ aADMINS ALL=\(ALL\) ALL‘ /etc/sudoers
sed -i ‘/NOPASSWD: ALL$/ a%wheel ALL=\(ALL\) NOPASSWD\: ALL‘ /etc/sudoers
#sed -i ‘s/PasswordAuthentication yes/#PasswordAuthentication yes/g‘ /etc/ssh/sshd_config
#sed -i ‘s/#PermitRootLogin yes/PermitRootLogin no/g‘ /etc/ssh/sshd_config
sed -i ‘s/#PubkeyAuthentication yes/PubkeyAuthentication yes/g‘ /etc/ssh/sshd_config
sed -i ‘/#Port 22/a\Port $SPORT‘ /etc/ssh/sshd_config
service sshd restart
#添加用户登录密钥
for i in $userlist
do
wget $SURL/secret/$i/$AUTH -P /home/$i/.ssh/
chown $i.$i /home/$i/.ssh/$AUTH
chmod 600 /home/$i/.ssh/$AUTH
done
####添加防火墙
RESTART=0
HAVE=$(grep $SPORT $IPTBL | grep -c ACCEPT)
if [ $HAVE -eq 0 ]; then
sed -i "/-i\ lo\ -j\ ACCEPT/a-A INPUT -p tcp -m tcp --dport $SPORT -j ACCEPT" $IPTBL
RESTART=1
fi
if [ $RESTART -eq 1 ]; then
service iptables restart
fi
##添加追踪日志 script log
if [ ! -d $SCRIPT ];then
mkdir -p $SCRIPT
chmod 743 $SCRIPT
fi
cat >> /etc/profile <<EOF
if [ \$UID -ge 1000 ]; then
exec /usr/bin/script -t 2>$SCRIPT/\$USER-\$UID-\`date +%Y%m%d%H%M\`.date -a -f -q $SCRIPT/\$USER-\$UID-\`date +%Y%m%d%H%M\`.log
fi
EOF
#时间同步
yum -y install ntpdate
echo ‘02 3 * * * root /usr/sbin/ntpdate cn.pool.ntp.org‘ >> /etc/crontab
###INSTALL make 编译器
yum -y install gcc gcc-c++ make autoconf automake libtool zlib zlib-devel openssl openssl-devel pcre-devel ncurses-devel unixODBC-devel perl-ExtUtils-Embed mesa* gtk+extra-devel mesa* freeglut* lrzsz openssh-clients unzip patch
}
nagios_client(){
yum -y install nrpe nagios-plugins nagios-plugins-nrpe nrpe nagios-plugins-load nagios-plugins-disk nagios-plugins-swap
sed -i ‘s/allowed_hosts=127.0.0.1/allowed_hosts=‘$NagiosServer‘,‘$TNagios‘/g‘ $NagiosDir
sed -i ‘/check_total_procs/a \command[check_disk]=/usr/lib64/nagios/plugins/check_disk -w 15% -c 10% -p /mnt‘ $NagiosDir
service nrpe start
}
salt_agent(){
# Install salt 2016.03.01
yum -y install https://repo.saltstack.com/yum/redhat/salt-repo-latest-1.el6.noarch.rpm
yum -y update
if [ $? -eq 0 ];then
yum -y install salt-minion
else
echo "yum update error"
exit 3
fi
#Config /etc/salt/minion
sed -i ‘s/#master: salt/master: ‘$MASTER‘/g‘ $MINION_PATH
sed -i ‘s/#hash_type: sha256/hash_type: sha256/g‘ $MINION_PATH
sed -i ‘/#key_logfile/a\log_file: \/var\/log\/salt\/minion/‘ $MINION_PATH
sed -i ‘s/#key_logfile: \/var\/log\/salt\/key/key_logfile: \/var\/log\/salt\/key/‘ $MINION_PATH
service salt-minion start
}
INIT
nagios_client
salt_agent
以上为初始化脚本。
第二个脚本: 添加zabbix客户端
hname=`hostname`
SURL=http://XX.XX.XX.XX
MASTER="XX.XX.XX.XX"
#判断用户是否存在
add_user_zabbix()
{
name="zabbix"
a=`grep -c $name /etc/passwd`
if [ "$a" -eq 1 ];then
echo "THE user $zabbix is aready exist"
return 1
else
echo "Add zabbix user"
groupadd "$name" -g 201
useradd -g "$name" -u 201 -m "$name"
fi
}
zabbix_agentd_install()
{
log_d="/var/log/zabbix"
#安装所需软件
yum install -y ntpdate gcc gcc-c++
sleep 3
#同步时间
ntpdate asia.pool.ntp.org
sleep 3
#安装zabbix
#切换到src
cd /usr/local/src
echo "Installing zabbix_agentd"
rm -rf zabbix-3.0.4.tar.gz*
sleep 1
echo "Downloading"
wget $SURL/zabbix/zabbix-3.0.4.tar.gz
sleep 1
if [ ! -f "zabbix-3.0.4.tar.gz" ];then
echo "zabbix-3.0.4.tar.gz is not exist"
exit 1
fi
tar zxvf zabbix-3.0.4.tar.gz
cd zabbix-3.0.4
sleep 1
/bin/bash configure --prefix=/usr --sysconfdir=/etc/zabbix --enable-agent
sleep 3
if [ $? != 0 ]; then
echo "configure was wrong!!"
exit 1
else
echo "The zabbix is aready installed!!"
fi
make && make install
if [ $? != 0 ]; then
echo "There were something wrong in make!!!"
exit 1
fi
#创建zabbix日志目录
if [ ! -d "$log_d" ];then
mkdir $log_d
fi
chown zabbix.zabbix $log_d
#修改配置文件
/bin/cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
chmod 755 /etc/init.d/zabbix_agentd
sed -i "s#BASEDIR=/usr/local#BASEDIR=/usr/#g" /etc/init.d/zabbix_agentd
sed -i "s/Server\=127.0.0.1/Server\=127.0.0.1,$MASTER/g" /etc/zabbix/zabbix_agentd.conf
sed -i "s/ServerActive\=127.0.0.1/ServerActive\=$MASTER:10051/g" /etc/zabbix/zabbix_agentd.conf
sed -i "s/Hostname=Zabbix server/Hostname=$hname/g" /etc/zabbix/zabbix_agentd.conf
sed -i "s#tmp/zabbix_agentd.log#var/log/zabbix/zabbix_agentd.log#g" /etc/zabbix/zabbix_agentd.conf
sed -i "#UnsafeUserParameters=0#aUnsafeUserParameters=1\n" /etc/zabbix/zabbix_agentd.conf
#启动服务
chkconfig zabbix_agentd on
service zabbix_agentd start
return 1
}
pid=`pgrep zabbix_agentd`
if [ -n "$pid" ];then
echo "the zabbix_agentd is aready installed!"
echo "Do want to reload the zabbix_agentd? Y/N"
read choice
case $choice in
Y) service zabbix_agentd stop;zabbix_agentd_install ;;
N) echo "You choose N,the script will be break";exit 2;;
*) echo "UNknow anwser!";exit 3;;
esac
else
add_user_zabbix
zabbix_agentd_install
exit 4
fi
以上为整理的初始化centos 6 服务器的脚本。隐藏了一些ip,不能直接使用于你的服务器。可以为读者提供一些思路。或者后续会完善为更简便的脚本。
本文出自 “濛sir的积累” 博客,谢绝转载!
原文:http://mengsir.blog.51cto.com/2992083/1897978