【shell脚本】监控磁盘/内存使用率·检测域名是否正常·一键部署LMNP·拉黑攻击服务器的异常ip

news2024/12/23 12:34:10

文章目录

  • 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(); 
?>

浏览器访问
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/87290.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Web前端开发技术课程大作业:简单的网页制作期末作业——狐妖小红娘(6页)

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 ⚽精彩专栏推荐&#x1…

PM说 | 如何精准的获取用户需求?需求分析到底分析什么?

如何精准获取用户需求&#xff1f;怎么做好需求分析? 文章目录如何精准获取用户需求&#xff1f;怎么做好需求分析?前言一、用户的正在需求是什么二、如何精准的获取用户需求三、实操项目分析四、需求分析的方法总结前言 不知你是否曾遇到这样的处境&#xff0c;听到需求&am…

多线程~实现多线程

实现多线程 进程&#xff1a;是正在运行的程序 是系统进行资源分配和调用的独立单位每一个进程都有它自己的内存空间和系统资源 线程&#xff1a;是进程中的单个顺序控制流&#xff0c;是一条执行路径 单线程&#xff1a;一个进程如果只有一条执行路径&#xff0c;则称为单…

小游戏开发指南及过程中的难点问题

如果仅仅针对个人开发者来讲&#xff0c;要独立开发一款大型游戏几乎无可能&#xff0c;更大成功的可能还是开发一款类似《羊了个羊》这样洗脑的小程序游戏。 所以这里主要论述小游戏开发的情况&#xff0c;也就是小程序游戏&#xff0c;首先从小游戏的开发流程来看&#xff1…

chatGPT:12.12 之后更新的 chatGPT 的本地部署和接口调用,解决 response 403 (无法连接openai服务器)问题

文章目录问题源代码改动Session token 的获取cf_clearance 的获取user-agent 的获取将 config.json.sample 内容修改并移动位置附注&#xff1a;环境配置python > 3.7特别提示playwright & cf_clearancerevChatGPT 版本httpxOpenAIAuth删除 import 中的错误后记问题 因…

web网页设计期末课程大作业:基于HTML+CSS+JavaScript个人书画作品展示HTML模板(6页)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

Matlab论文插图绘制模板第69期—带误差棒的折线图(Errorbar)

在之前的文章中&#xff0c;分享了一系列Matlab折线图的绘制模板&#xff1a; 这一次&#xff0c;再来分享一种特殊的折线图&#xff1a;带误差棒的折线图。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;Matlab论文插图绘制模板系列&#xff0c;旨在降低大家使用Matl…

C语言判断一个整数是不是素数(质数)、求100以内的所有素数、求前50个素数

目录 一.什么是素数&#xff08;质数 Prime&#xff09; 二.判断一个整数是不是素数&#xff08;质数&#xff09;代码 三.求100以内的所有素数&#xff08;质数&#xff09; 四.输出前50个素数&#xff08;质数&#xff09; 一.什么是素数&#xff08;质数 Prime&#xff0…

5、metasploit信息搜集

一、概念 针对目标在开放端口、以及运行的服务进行探测。portscan端口扫描mysql安全测试服务版本确定密码嗅探SNMP探测二、metasploit中信息搜集模块 2.1、use auxiliary/gather/ 与 use auxiliary/scanner/ 2.2、针对SMB版本探测&#xff08;默认445端口&#xff09; 也可以探…

vTESTstudio入门到精通 - CANoe工程导入vTESTstudio_02

前面我们已经讲完了如何配置出来一个vTESTstudio工程,并且编译成一个可执行的文件,接下来我们就是要把这块可执行文件导入到CANoe中,通过CANoe工程来执行我们编译的脚本,实现对应功能的测试,今天就是给大家分享如何导入。 二、CANoe工程导入vTESTstudio执行文件 1、创建一…

猿如意中的【blender】工具详情介绍

文章目录一、工具名称二、下载安装渠道2.1 什么是猿如意&#xff1f;2.2 如何下载猿如意&#xff1f;三、工具介绍四、blender介绍4.1 blender简介4.2 背景4.3 主要功能五、软件安装过程5.1 如何在猿如意中下载开发工具blender&#xff1f;5.2 下载blender软件截图5.3 blender安…

基于51单片机的数字电压表设计

程序运行图&#xff1a; 仿真原理图&#xff1a; 部分程序&#xff1a; #define LED_GLOBAL 1 #include "led.h" void ledDelay(uint ms) { uchar delayi; while(--ms) { for(delayi0;delayi<124;delayi); } } void init_led(void) { LEDsegLedCode[0]; L…

四、JavaScript——基本语法

1.注释 <script>/*1.多行注释*///2. 单行注释</script> 2.大小写 JS严格区分大小写 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"…

Web前端105天-day42-JSCORE

JSCORE02 目录 前言 一、复习 二、函数在对象中触发方式 2.1.call 2.2.apply 2.3.bind 三、引用类型 四、构造函数 五、new 六、原型理念 ​七、原型 八、class 九、严格模式 十、ES6 十一、let与const 总结 前言 JSCORE02学习开始 一、复习 JS引擎具有自动修…

操作系统学习笔记_4 文件;磁盘

文件 有信息的数据集合。 文件包含的信息&#xff1a;文件名、标识符&#xff08;操作系统要看&#xff09;、类型、大小、创建修改时间、所有者、安全信息。 文件管理 文件分为无结构的流式文件和有结构的记录式文件。记录式文件由一条条记录组成。 文件存放在根目录里的…

DFGN-Dynamically Fused Graph Network for Multi-hop Reasoning 论文阅读

文章目录介绍相关工作text-based QA多跳QA推理模型段落选择器构建实体图编码 Query 和 ContextFusion Block 推理Doc2GraphDynamic Graph AttentionUpdate QueryGraph2Doc预测介绍 将 DFGN 模型用于HotpotQA &#xff08;TBQA类型的公开数据集&#xff09; QA任务注重从单一的…

ADI Blackfin DSP处理器-BF533的开发详解46:图像处理专题-Translation (图像平移处理)(含源码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 代码实现了图像平移处理&#xff0c;代码运行时&#xff0c;会通过文件系统打开工程文件根目下" …/ImageView"路径中的 tes…

【爬虫实战项目】Python爬取Top100电影榜单数据并保存csv文件(附源码)

前言 今天给大家介绍的是Python爬取Top100电影榜单数据保存csv文件&#xff0c;在这里给需要的小伙伴们代码&#xff0c;并且给出一点小心得。 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫&#xff0c;基本的是加请求头&#xff0c;但是这样的纯文本数据爬取的…

(四)springcloud之Nacos注册服务与发现-1

前言&#xff1a;一段时间来忙忙碌碌&#xff0c;回头发现很多技术已经更新了很多&#xff0c;很长一段时间都在忙其他的事情&#xff0c;以至于没有太多关注于微服务更新&#xff0c;今天更新了下版本以便于后期使用&#xff0c;突然发现很多东西已经被删除或直接改变了&#…

TIA博途_序列化指令Serialize的具体使用方法示例

TIA博途_序列化指令Serialize的具体使用方法示例 序列化指令的基本用途: 首先,我们可以查看TIA博途中的帮助文件说明,如下图所示: 简单总结就是: 把复杂的数据或数据类型(例如UDT、STRUCT等)转换成BYTE或CHAR类型的数组,从而方便数据处理,通常在通信数据的处理中可以…