文章目录
- 1、监控2台服务器硬盘利用率脚本实战
- 2、批量检查 5个网站域名是否正常
- 3、统计磁盘使用率,磁盘大于%5 就打印mail 小于 硬盘正常 内存也是一样
- 4、有人攻击我服务器 就拉黑异常ip
- 5、使用for循环安装 批量安装3台服务器 php环境 使用(LAMP)脚本实现 环境yum 安装都可以 主要测试语法 工作结果就是 每台服务器 都可以打开php 测试页面
- 5.1 onekey_install_nginx
- 5.2 onkey_install_mysql
- 5.3 onekey_install_php
- 5.4 批量部署
- 5.4 测试
1、监控2台服务器硬盘利用率脚本实战
案例:192.168.169.169监控192.168.169.170、1192.168.169.71俩台虚拟机磁盘使用率,并发送邮件
###############169机器上编写#####################
vim /root/monitor_disk.sh
#! /bin/bash
for ip in 192.168.169.170 192.168.169.171
do
ssh root@$ip "bash /root/monitor.sh"
done
# crontab -e 编写定时任务
0 0 * * * bash /root/monitor_disk.sh
###############170、170机器上编写###################
vim /root/monitor.sh
#!/bin/bash
yum -y install sendmail # 安装sendmail
service sendmail start
yum install -y mailx # 安装mail
diskUsed=$(df -Th|awk -F'[ %]+' '/\/$/{print $6}')
mkdir /tmp
logFile=/tmp/jiankong.log
function Sendmail(){
mail -s"监控报警" 1011776350@qq.com < $logFile
}
function check(){
if [ $diskUsed -ge 85 ];then
echo "磁盘使用率:${diskUsed}%" > /tmp/jiankong.log
Sendmail
fi
}
function main(){
check
}
main
2、批量检查 5个网站域名是否正常
#!/bin/bash
array=(www.baidu.com www.oldboy.com www.it.com http://www.taobao.com www.hhhhhhh.com)
for i in ${array[*]}
do
#-T 设置超时时间 -t设置链接的次数
wget -T 5 -t 2 --spider $i &>/dev/null
if [ $? -eq 0 ];then
echo "$i 域名正常"
else
echo "$i 域名异常"
fi
done
结果:
[root@localhost lianxi]# bash test_dns.sh
www.baidu.com 域名正常
www.oldboy.com 域名正常
www.it.com 域名异常
http://www.taobao.com 域名正常
www.hhhhhhh.com 域名异常
3、统计磁盘使用率,磁盘大于%5 就打印mail 小于 硬盘正常 内存也是一样
#!/bin/bash
function disk(){
diskUsed=$(df -Th|awk -F'[ %]+' '/\/$/{print $6}')
if [ $diskUsed -ge 5 ];then
echo -e "\e[31m磁盘使用率超过5%\e[0m"
else
echo " nothing to do"
fi
}
function mem(){
total=`free -m|grep -i mem|tr -s " "|cut -d " " -f2`
used=`free -m|grep -i mem|tr -s " "|cut -d " " -f3`
used_rate=`echo "scale=4;$used/$total" |bc` # 保留4位小数
echo $used_rate
result=` echo "$used_rate>0.05"|bc `
if (( $result == 1 ))
then
echo -e "\e[31m使用率超过5%\e[0m"
else
echo " nothing to do"
fi
}
disk
mem
4、有人攻击我服务器 就拉黑异常ip
# 获取列表,统计最近日志 登录次数超过20次的ip
iplist=$(/bin/lastb -n 100|awk '{print $3}'|sort|uniq -c|awk '{if ($1>20) print $2}')
# 追加到黑名单并清空登录日志
for ip in ${iplist}
do
echo ALL: ${ip} >> /etc/hosts.deny
echo > /var/log/btmp
done
5、使用for循环安装 批量安装3台服务器 php环境 使用(LAMP)脚本实现 环境yum 安装都可以 主要测试语法 工作结果就是 每台服务器 都可以打开php 测试页面
5.1 onekey_install_nginx
#!/bin/bash
#解决软件的依赖关系,需要安装的软件包
yum install epel-release -y
yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel gcc gcc-c++ autoconf automake make psmisc net-tools lsof vim geoip geoip-devel wget -y
#新建nginx用户和组
id nginx || useradd nginx -s /sbin/nologin
#下载nginx软件
mkdir /hejin -p && cd /hejin
wget https://nginx.org/download/nginx-1.21.4.tar.gz
#解压软件
tar xf nginx-1.21.4.tar.gz
#进入解压后的文件夹
cd nginx-1.21.4
#编译前的配置
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-threads --with-http_v2_module --with-http_stub_status_module --with-stream --with-http_geoip_module --with-http_gunzip_module
#如果上面的编译前的配置失败,直接退出脚本
if (( $? != 0));then
exit
fi
#编译,启动2个进程去编译,这样速度快
make -j 2
#编译安装
make install
#修改PATH变量
echo "PATH=$PATH:/usr/local/nginx/sbin" >>/root/.bashrc
#firewalld and selinux
#stop firewall和设置下次开机不启动firewalld
service firewalld stop
systemctl disable firewalld
#临时停止selinux和永久停止selinux
setenforce 0
sed -i '/^SELINUX=/ s/enforcing/disabled/' /etc/selinux/config
#开机启动
chmod +x /etc/rc.d/rc.local
echo "/usr/local/nginx/sbin/nginx" >>/etc/rc.local
source /etc/rc.local
#修改nginx.conf的配置,例如:端口号,worker进程数,线程数,服务域名
sed -i '/worker_processes/ s/1/2/' /usr/local/nginx/conf/nginx.conf
sed -i '/worker_connections/ s/1024/2048/' /usr/local/nginx/conf/nginx.conf
#sed -i -r '36c \\tlisten 80;' /usr/local/nginx/conf/nginx.conf
#sed -i -r '37c \\tserver_name www.it.com;' /usr/local/nginx/conf/nginx.conf
#killall nginx进程
killall -9 nginx
#启动nginx
/usr/local/nginx/sbin/nginx
5.2 onkey_install_mysql
#!/bin/bash
#解决软件的依赖关系
yum install cmake ncurses-devel gcc gcc-c++ vim lsof bzip2 openssl-devel ncurses-compat-libs -y
#解压mysql二进制安装包
cd /hejin && tar xf mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz
#移动mysql解压后的文件到/usr/local下改名叫mysql
mv mysql-5.7.34-linux-glibc2.12-x86_64 /usr/local/mysql
#新建组和用户 mysql
groupadd mysql
#mysql这个用户的shell 是/bin/false 属于mysql组
useradd -r -g mysql -s /bin/false mysql
#关闭firewalld防火墙服务,并且设置开机不要启动
service firewalld stop
systemctl disable firewalld
#临时关闭selinux
setenforce 0
#永久关闭selinux
sed -i '/^SELINUX=/ s/enforcing/disabled/' /etc/selinux/config
#新建存放数据的目录
mkdir /data/mysql -p
#修改/data/mysql目录的权限归mysql用户和mysql组所有,这样mysql用户可以对这个文件夹进行读写了
chown mysql:mysql /data/mysql/
#只是允许mysql这个用户和mysql组可以访问,其他人都不能访问
chmod 750 /data/mysql/
#进入/usr/local/mysql/bin目录
cd /usr/local/mysql/bin/
#初始化mysql
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql &>passwd.txt
#让mysql支持ssl方式登录的设置
./mysql_ssl_rsa_setup --datadir=/data/mysql/
#获得临时密码
tem_passwd=$(cat passwd.txt |grep "temporary"|awk '{print $NF}')
#$NF表示最后一个字段
# abc=$(命令) 优先执行命令,然后将结果赋值给abc
# 修改PATH变量,加入mysql bin目录的路径
#临时修改PATH变量的值
export PATH=/usr/local/mysql/bin/:$PATH
#重新启动linux系统后也生效,永久修改
echo 'PATH=/usr/local/mysql/bin:$PATH' >>/root/.bashrc
#复制support-files里的mysql.server文件到/etc/init.d/目录下叫mysqld
cp ../support-files/mysql.server /etc/init.d/mysqld
#修改/etc/init.d/mysqld脚本文件里的datadir目录的值
sed -i '70c datadir=/data/mysql' /etc/init.d/mysqld
#生成/etc/my.cnf配置文件
cat >/etc/my.cnf <<EOF
[mysqld_safe]
[client]
socket=/data/mysql/mysql.sock
[mysqld]
socket=/data/mysql/mysql.sock
port = 3306
open_files_limit = 8192
innodb_buffer_pool_size = 512M
character-set-server=utf8
[mysql]
auto-rehash
prompt=\\u@\\d \\R:\\m mysql>
EOF
#修改内核的open file的数量
ulimit -n 1000000
#设置开机启动的时候也配置生效
echo "ulimit -n 1000000" >>/etc/rc.local
chmod +x /etc/rc.d/rc.local
#启动mysqld进程
service mysqld start
#将mysqld添加到linux系统里服务管理名单里
/sbin/chkconfig --add mysqld
#设置mysqld服务开机启动
/sbin/chkconfig mysqld on
#初次修改密码需要使用--connect-expired-password 选项
#-e 后面接的表示是在mysql里需要执行命令 execute 执行
mysql -uroot -p$tem_passwd --connect-expired-password -e "set password='123456';"
#检验上一步修改密码是否成功,如果有输出能看到mysql里的数据库,说明成功。
mysql -uroot -p'123456' -e "show databases;"
5.3 onekey_install_php
# 安装软件包
yum -y install php php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mssql php-snmp php-soap
# 安装php扩展支持mysql
yum install php-tidy php-common php-devel php-fpm php-mysql -y
systemctl start php-fpm.service
5.4 批量部署
将前3个安装脚本整合成一个onekey_install_lnmp.sh
#!/bin/bash
for i in 192.168.169.169 192.168.169.170 192.168.169.179
do
# 前提是建立了免密通道
scp onekey_install_lnmp.sh root@$i:/root
ssh root@$i "bash /root/onekey_install_lnmp.sh"
done
5.4 测试
# 修改每台服务器的nginx配置文件
location / {
root /html/www;
index index.html index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /html/www$fastcgi_script_name; #修改成发布目录
include fastcgi_params;
}
#发布测试页测试是否ok
cd /html/www
vi index.php
<?php
phpinfo();
?>
浏览器访问