服务器初始化脚本

#!/bin/sh
dataDir="/data"
if [ ! -d "$dataDir" ];then
 mkdir $dataDir
 echo -e '\033[32m /data dir create success!! check success!! \033[0m'
else
 echo -e '\033[32m /data dir already exists check success!! \033[0m'
fi
user=admin
group=admin
url='https://c2.binjie.fun/#/chat'
#create group if not exists
egrep "^$group" /etc/group >& /dev/null
if [ $? -ne 0 ]; then
	groupadd $group
	echo -e '\033[32m admin add group success!! \033[0m'
else
	echo -e '\033[32m admin group already exists check success!! \033[0m'
fi

#create user if not exists
egrep "^$user" /etc/passwd >& /dev/null
if [ $? -ne 0 ]; then
	useradd -g $group $user
	echo "semisemi" | passwd --stdin admin
	echo "admin ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
	echo -e '\033[32m admin add user success!! check success!! \033[0m'
else
	echo -e '\033[32m admin user already exists check success!! \033[0m'
fi

check_transparent_hugepage(){
enabledFile='/sys/kernel/mm/transparent_hugepage/enabled'
defragFile='/sys/kernel/mm/transparent_hugepage/defrag'
if [ -f "$enabledFile" ]; then
	echo never > /sys/kernel/mm/transparent_hugepage/enabled
	echo -e '\033[32m hugepage enabled set never success!! check success!! \033[0m'
fi

if [ -f "$defragFile" ]; then
	echo never > /sys/kernel/mm/transparent_hugepage/defrag
	echo -e '\033[32m hugepage defrag set never success!! check success!! \033[0m'
fi
}

check_profile(){
	grep -q 'export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S" `whoami`' /etc/profile
	if [ $? -eq 1 ];then
		echo 'export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S" `whoami`' >> /etc/profile
		echo -e '\033[32m exoport whoami succeed check success!! \033[0m'
	else
			echo -e '\033[32m whoami already exists in /etc/profile check success!!\033[0m'
	fi
	grep -q "HISTFILESIZE=10000"  /etc/profile
	if [ $? -eq 1 ];then
		echo "HISTFILESIZE=10000" >> /etc/profile
		echo -e '\033[32m export historysize check success!! \033[0m'
	else
	  echo -e '\033[32m historysize already exists in /etc/profile check success!! \033[0m'
	fi
}
set_limits(){
cat <<'LIMIT' | sudo tee /etc/security/limits.d/90-nproc.conf > /dev/null
* soft nproc 655350
* hard nproc 655350
LIMIT

cat <<'DEF' | sudo tee /etc/security/limits.d/def.conf > /dev/null
* soft nproc 655350
* hard nproc 655350
DEF

cat <<'EOF' | sudo tee /etc/security/limits.conf > /dev/null
# End of file
* soft nproc 655350
* hard nproc 655350
* soft nofile 655350
* hard nofile 655350
* - memlock unlimited
EOF
}
check_limits(){
grep -q "* soft nproc 655350"  /etc/security/limits.conf
if [ $? -eq 1 ];then
	set_limits
	echo -e '\033[32m ulimit set success!! please close this session. check success!! \033[0m'
else
	echo -e '\033[32m ulimit -n is already 655350 !! check success!! \033[0m'
fi
}
check_hostname(){
  hostname=`hostname`
  if [ "$hostname" == 'localhost.localdomain' ];then
      echo -e '\033[31m please check hostname ,hostname not set!!! check failed !!\033[0m'
  elif [[ ${hostname} == *_* ]]; then
      echo -e '\033[31m please check hostname ,hostname must not contain any "_" signs. check failed !\033[0m'
  else
      echo -e '\033[32m hostname check success!! \033[0m'
  fi
      
}
check_timezone(){
  # check timezone
timezone=`date -R|awk '{print $6}'`
if [ $timezone != '+0800' ];then
    echo -e '\033[31m please check timezone ,you can try exec " ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime " check failed! \033[0m'
fi
echo -e "\033[32m timezone check success!! \033[0m"
}

check_os(){
  if [ -f /etc/redhat-release ] ; then
    DIST=`cat /etc/redhat-release |sed s/\ release.*// |awk -F ' ' '{print $1}'`
    MAJOR_VERSION=`cat /etc/redhat-release | sed s/.*release\ // |sed s/\ .*// |awk -F '.' '{print $1}'`
    os="${DIST}_${MAJOR_VERSION}"
    if [ $os == 'CentOS_7' ]; then
        echo -e "\033[32m os is CentOS_7 check success!! \033[0m"
    else
      echo -e "\033[31m os is not CentOS_7 check failed !! \033[0m"
    fi
  else
    echo -e '\033[31m linux os is not Centos ,please check OS !! check failed !! \033[0m'
  fi
}
check_swap(){
  sudo sed -i '/ swap /s/^/#/' /etc/fstab
  sudo swapoff -a
}
check_volums(){
  mountpoint -q /data
  if [ $? -eq 0 ]; then
      echo -e '\033[32m /data dir is already mount success! \033[0m'
      grep -q '/data' /etc/fstab
      if [[ $? -ne 0 ]]; then
          echo -e '\033[31m /data Not in "/etc/fstab",you must write /data to "/etc/fstab" check failed! \033[0m'
      fi
      data_size=`df -m | grep -w /data | awk '{print $2}'`
      if [ $data_size -lt 100000 ]; then
          echo -e '\033[31m /data size must greater than 100G  check failed! \033[0m'
      else
          echo -e '\033[32m /data size check success!  \033[0m'
      fi
  else
      echo -e '\033[31m /data dir is unmount,please check it check failed! \033[0m'
  fi
  root_size=`df -m | grep -w / | awk '{print $2}'`
  if [ $root_size -lt 100000 ]; then
      echo -e '\033[31m / size must greater than 100G check failed! \033[0m'
  else
    echo -e '\033[32m / size check success!  \033[0m'
  fi
}
check_aiworkEnv(){
  echo `cat /proc/cpuinfo | grep flags | uniq | grep sse4_1 && cat /proc/cpuinfo | grep flags | uniq | grep sse4_2` >& /dev/null
  if [ $? -ne 0 ]; then
      echo -e '\033[33m because cpu flags missing sse4_1 and ssh4_2 ,aiwork not allowed to install this platform \033[0m'
  else
      echo -e '\033[32m aiwork model env check success!  \033[0m'
  fi
}
check_port(){
  port_list=(80 81 82 85 86 465 2181 2888 3888 3000 3306 6379 16379 26379 8006 8077 8079 8082 8084 8085 8086 8087 8089 8090 8091 8600 8864 8876 8889 9020 9021 9029 9091 9090 9092 9515 9516 9533 )
  for i in ${port_list[*]}
  do
   count=`ss -tnpl | grep -w $i | wc -l`
   process_name=`netstat -tnpl | grep -w $i | awk '{print $7}'`
   if [[ $count -gt 0 ]]; then
     echo -e "\033[31m $i port is used ,process_name is $process_name check failed! \033[0m"
   else
     echo -e "\033[32m $i port check success !! \033[0m"
   fi
  done
}
check_env(){
  if [ $HADOOP_HOME ];then
	  echo -e "\033[31m hadoop env exists HADOOP_HOME = $HADOOP_HOME check failed! \033[0m"
  else
      echo -e "\033[32m hadoop_env check success!! \033[0m"
  fi

  if [ -z $JAVA_HOME ];then
      echo -e "\033[32m java_env check success!! \033[0m"
  else
	  echo -e "\033[31m java env exists JAVA_HOME = $JAVA_HOME check failed! \033[0m"
  fi

}
check_data(){
	a=`lsblk` | grep data | wc -l`
	if [ $a -eq 0 ]
	do
	echo -e "\033[32m the disk of data is not mount \033[0m"	
	done
}
check_python_home(){
#	echo `python -version` >/dev/null 2>&1 &
	if [ $? -eq 0 ];then
	echo "\033[32m python is exist\033[0m"
	docker-compose 
	if [ $? -eq 0 ];then
	echo "\033[32m docker-compose is not installed \033[0m"
	cp -r  /home/$user/docker-compose /usr/lib/bin/
	if [ $? -eq 0 ];then
	echo "\033[32m docker-compose is installed \033[0m"
	else
	exit 1
}

check_transparent_hugepage
check_limits
check_profile
check_hostname
check_timezone
check_os
check_volums
check_aiworkEnv
check_port
check_env
check_swap
check_data
echo_python

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值