一、集群自动安装jdk:

思路

  • 软件统一:httd/yum
  •   实现一台机器的自动安装(写脚本)
    
  •    	批量发送脚本,自动执行脚本
    

环境准备

  • /etc/init.d/httpd restart #开启httpd服务器
  • mkdir /var/www/html/jdk #在httpd服务的共享目录中创建一个目录
  • mv ~/ jdk-8u73-linux-x64.tar.gz / var/www/html/jdk #将下载的jdk放入共享目录
  • 在浏览器中测试是否可以访问

脚本一:自动下载和安装JDK

#!/bin/sh

#is root
[ $UID -ne 0 ] &&{
    echo "you need to root "
    exit 2
}


#1. is install wget
unset isInstall
isInstall=`yum list installed |grep wget`
[ -n "$isInstall" ] && echo "wget is installed" || {
    yum install -y wget \
    echo "wget install successs"
}

#donwload jdk
JDK="jdk-8u73-linux-x64.tar.gz"
wget http://test/jdk/jdk-8u73-linux-x64.tar.gz >/dev/null 2>&1 
[ -f "$JDK" ] && echo "download Success" ||{
    echo "download Failed"
    exit 2
}
#解压
/bin/tar -zxf ./jdk-8u73-linux-x64.tar.gz -C /home/zy/tools/ 
#查看是否解压成功
java=/home/zy/tools/`ls -l /home/zy/tools/|grep jdk1.8|awk ' {print $NF} '`
[ -n "$java" ] && echo "$java" ||{
    echo "tar Filed"
    exit 2
}
#配置Java的环境变量
echo "export JAVA_HOME=$java" >> /etc/profile
echo "PATH=$PATH:$java/bin" >> /etc/profile
. /etc/profile
java -version >/dev/null 2>&1
[ $? -eq 0 ] && {
echo "jdk install Successs"
source /etc/profile 
}||{
    echo "jdk install Fialed"
    exit 2
} 

脚本二:非交互式的设置免秘钥登录

#!/bin/sh
#1. ssh-key-gen
key(){
expect -c "
    spawn ssh-keygen
    expect {
    \"(/root/.ssh/id_rsa):\" {send \"\r\";exp_continue;}
    \"(empty for no passphrase)\" {send \"\r\";exp_continue;}
    \"passphrase again:\" {send \"\r\";exp_continue;}
    }
  "
}
key

send_pub(){
    expect -c "
       spawn ssh-copy-id $1
       expect {
       \"(yes/no)?\" {send \"yes\r\";exp_continue;}
       \"password:\" {send \"123456\r\";exp_continue;}
      }
    "
}
for i in `cat ./hostnames.txt`
  do
    send_pub $i
done

脚本三:批量分发自动安装的脚本文件,并执行

#!/bin/sh
/bin/sh ./send_sshKey.sh
[ "$?" -ne 0 ] && {
    echo "ssh key-pub faile!"
    exit 2
}


for hosts in `cat ./hostnames.txt`;
  do 
    ping -c 1 $hosts
    if [ "$?" -eq 0 ]
      then 
        scp -r ./auto_install.sh root@$hosts:~/ 
        ssh root@$hosts "sh ~/auto_install.sh"
    fi
done

二、生产环境中监控MySQL:

需求:监控Mysql服务是否正常启动,如果未正常启动,就启动mysql服务 #方法一:过滤mysql端口的3306判断

#!/bin/sh
PORT=`netstat -lnt|grep 3306 |awk -F ':::' ' {print $2} '`
if [ “$PORT” =  “3306” ];then
  echo "db is runing "
else 
  service mysql restart
fi

#方法二:使用wc命令,过滤mysql的行

#!/bin/sh
PORT=`netstat -lnt|grep 3306 |wc -l`
if [ $PORT -gt 0 ];then
  echo "db is runing "
else 
  service mysql restart
fi

#方法三:如果是mysql端口和进程同时存在,即认为mysql服务正常

#!/bin/sh
PORT=`netstat -lnt|grep 3306 |wc -l`
PS_ID=` ps -ef |grep mysql|grep -v grep |wc -l`
if [ $PORT -gt 0 -a $PS_ID -ge 2 ];then
  echo "db is runing "
else 
  service mysql restart
fi