一、集群自动安装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