Linux-站点可用性检测-shell自动化脚本开发

目录

站点可检测性

检测前奏

实验目的

实验执行

第一步:

第二步:


站点可用性检测

检测前奏

实验目的

利用crontab来判断web服务器是否可用,如果不可用,则自动启动,并且将过程中的操作写到日志文件中

至于这个怎么看web服务器是否可用,咱们就用xampp试试看, 刚开始有防火墙的存在,所以哪怕

opt/lampp/lampp status 是打开的,但是依旧无法访问,我们也不能就这么把防火墙关掉,所以我们可以选择开放这个http端口,即 80/tcp 这个端口

一个站点如果无法访问,肯能有两个原因:

1.Web服务器没有正常启动:那么如何使用shell进行判断?

 使用curl直接访问网页,如果成功,则 判断 $? 是否为0,为0表示打开了xampp服务,不为0表示没有打开服务(此时需要在脚本中设置开启服务的指令)
 ​

image-20231119144339569

据此我们可以发现,使用curl是否可以正常访问是与web服务器是否打开有关

在本机上开启xampp服务的同时curl是不受防火墙的影响的,但是在本机上开启xampp服务,换一台主机进行curl就会受到本机的防火墙影响

2.防火墙没有允许80端口通过:让shell执行 firewall-cmd 添加端口通过的命令即可

 使用 netstat -ant | prep :80 进行查询,如果端口被打开,则查看 $? 是否为0 ,为0表示成功启动80端口
 ​
 使用 firewall-cmd --list-port | grep :80,情况和上面一样
 ​
 使用 ps -ef 查询对应的进程 
 ​
 ​
 firewall-cmd --add-port 80/tcp

也正是因为这两个原因,所以我们的本次实验中,设定的定时任务就是这两个。完成上述特征识别后,在shell中编写脚本,并让cron定时执行

我们来看看 netstat -ant | grep :80 中的 ant 分别代表什么意思

image-20231119145123155

-a的结果就是像这些英文字母表示的结果

image-20231119145216320

-an的结果就是将上面的英文字母转换成ip地址

image-20231119145303195

-ant的结果就是选择出于tcp链接有关有关的端口

实验执行

第一步:

确定crontab服务正常开启(必要条件下不要留下没用的服务)

第二步:

编写脚本

 curl http://192.168.230.147/dashboard/ > dev/null
 if [ $? -ne 0 ]; then
 #此时说明是xampp自身的服务没有启动,如果是防火墙的问题我们会在下面考虑的
         /opt/lampp/lampp start
         echo "检测到lampp 没有启动,已自动开启 - "`date "+%Y-%m-%d %H:%M:%S"` >> /opt/learn/site_check.log
 fi
 ​
 firewall-cmd --list-port | grep :80
 if [ $? -ne 0 ]; then
         firewall-cmd --add-port=80/tcp
         echo "检测到80端口没有通过,已自动通过 - "`date "+%Y-%m-%d %H:%M:%S"` >> /opt/learn/site_check.log
 fi
 ​

注意。有邮件内容是这样的,是正确的,没有错

我这里有一个问题,在开启了xampp但是没有开启防火墙80端口的前提下,我的curl也是无法访问的,导致此时的 $? 结果也不为0,那么此时匹配进入第一个if会去开启xampp服务,但问题是此时xampp服务是已经打开的情况。总的来说curl访问不了的原因是因为防火墙的问题,但是却误判成了xampp服务没有打开的问题

所以我觉得应该把端口判断和服务判断调换一下位置

 firewall-cmd --list-port | grep :80
 if [ $? -ne 0 ]; then
         firewall-cmd --add-port=80/tcp
         echo "检测到80端口没有通过,已自动通过 - "`date "+%Y-%m-%d %H:%M:%S"` >> /opt/learn/site_check.log
 fi
 ​
 curl http://192.168.230.147/dashboard/ > dev/null
 if [ $? -ne 0 ]; then
 #此时说明是xampp自身的服务没有启动,如果是防火墙的问题我们会在下面考虑的
         /opt/lampp/lampp start
         echo "检测到lampp 没有启动,已自动开启 - "`date "+%Y-%m-%d %H:%M:%S"` >> /opt/learn/site_check.log
 fi

  • 17
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值