当前位置: 首页 > news >正文

Shell编程类-网站检测

Shell编程类-网站检测

    • 面试题参考答法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

a=(1 2 3 4)
echo ${a[0]}
echo ${a[*]}
  • 这里声明一个数值,并选择逐个调用输出还是全部输出

在这里插入图片描述
在这里插入图片描述

curl -w %{http_code} urL/IPADDR
  • 常用-w选项去判断网站的状态,因为不加选择访问到的网站可能出现乱码无法判断是否网站down了。

在这里插入图片描述

面试题参考答法

#!/bin/bash
web=(http://www.baidu.comhttps://blog.csdn.net/weixin_43576565https://blog.csdn.net/weixin_43576565/article/details/140085451?spm=1001.2014.3001.55011.1.1.1
)
#定义数组
for i in "${web[@]}"; do#按照数组中值的个数循环,每次循环吧数组中值赋予变量icode=$(curl -o /dev/null -s --connect-timeout 5 -w '%{http_code}' "$i" | grep -E "200|302")if [[ "$code" != "" ]]; thenecho "$i is ok" >>/home/webcheck_log/ok.logelsecode=$(curl -o /dev/null -s --connect-timeout 5 -w '%{http_code}' "$i" | grep -E "200|302")if [[ "$code" != "" ]]; thenecho "$i is ok" >>/home/webcheck_log/ok.logelseecho "$i is error" >>/home/webcheck_log/error.logfifi
done

在这里插入图片描述
这段脚本是一个Bash脚本,用于检查一组网址的可访问性。它使用curl命令来发送HTTP请求,并根据返回的状态码判断网址是否可用。脚本的主要步骤如下:

  1. 定义一个名为web的数组,其中包含了要检查的网址。
  2. 使用for循环遍历数组中的每个网址。
  3. 对于每个网址,使用curl命令发送HTTP请求,并设置超时时间为5秒。
  4. 使用grep命令过滤出状态码为200或302的响应,这些状态码表示请求成功。
  5. 如果找到了匹配的状态码,将网址写入名为ok.log的文件,表示该网址可用。
  6. 如果没有找到匹配的状态码,再次尝试发送请求,如果仍然没有匹配的状态码,将网址写入名为error.log的文件,表示该网址不可用。

这个脚本可以用于定期检查一组网址的可访问性,并将结果记录在日志文件中。

  • 正常的编程思维是这样的写,但是在Shell脚本中更注重脚本的复用,所以应该将web数组部分改为读取文本内容。
    要将web数组部分改为读取文本内容以提高复用率,可以将网址列表存储在一个文本文件中,然后使用脚本读取该文件并将每个网址添加到web数组中。以下是修改后的脚本:
#!/bin/bash
# 定义一个空数组
declare -a web# 从文本文件中读取网址并添加到数组中
while IFS= read -r line; doweb+=("$line")
done < urls.txt# 按照数组中值的个数循环,每次循环吧数组中值赋予变量i
for i in "${web[@]}"; do# 使用curl命令发送HTTP请求,并设置超时时间为5秒code=$(curl -o /dev/null -s --connect-timeout 5 -w '%{http_code}' "$i" | grep -E "200|302")# 如果找到了匹配的状态码,将网址写入名为ok.log的文件,表示该网址可用if [[ "$code" != "" ]]; thenecho "$i is ok" >>/home/webcheck_log/ok.logelse# 如果没有找到匹配的状态码,再次尝试发送请求,如果仍然没有匹配的状态码,将网址写入名为error.log的文件,表示该网址不可用code=$(curl -o /dev/null -s --connect-timeout 5 -w '%{http_code}' "$i" | grep -E "200|302")if [[ "$code" != "" ]]; thenecho "$i is ok" >>/home/webcheck_log/ok.logelseecho "$i is not ok" >>/home/webcheck_log/error.logfifi
done

在这个修改后的脚本中,我们首先声明了一个空数组web,然后使用while IFS= read -r line; do ... done < urls.txt循环从名为urls.txt的文本文件中逐行读取网址,并将其添加到web数组中。

这段代码是Bash脚本中的一个循环结构,用于从名为urls.txt的文件中逐行读取内容。下面是对这段代码的解释:

  1. while IFS= read -r line; do ... done: 这是一个while循环,它会一直执行直到文件结束。在这个循环中,每次迭代都会读取一行文本并将其存储在变量line中。

  2. IFS=: 这是内部字段分隔符(Internal Field Separator)的设置。将其设置为空字符串意味着不使用任何字符作为字段分隔符,这样整行文本都会被当作一个字段处理。

  3. read -r line: 这是read命令的一个选项,用于从输入中读取一行并将其存储在变量line中。-r选项表示原始模式,这意味着反斜杠不会被视为转义字符。

  4. done < urls.txt: 这是重定向操作符,它将文件urls.txt的内容作为输入传递给while循环。这意味着while循环将从urls.txt文件中逐行读取内容。

综上所述,这段代码的作用是从名为urls.txt的文件中逐行读取内容,并将每行内容存储在变量line中,然后执行循环体中的代码。

这样,我们就可以通过修改urls.txt文件来轻松地更改要检查的网址列表,从而提高脚本的复用性。
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 云端AI大模型群体智慧后台架构思考
  • 数据结构-线性表的应用
  • 【Kafka】记录一次Kafka消费者重复消费问题
  • 日志自动分析-Web---360星图GoaccessALBAnolog
  • ABB PP825控制器 处理器 模块
  • 第8篇 智能合约的商业应用场景解析
  • 华为仓颉可以取代 Java 吗?
  • 性能测试相关理解(一)
  • 速盾:防护攻击CDN
  • ESD管ESD113-B1-02EL(S)国产替代型号ULC0342CDNH,ULC0321CDNH
  • 代码随想录-Day49
  • python 使用selenium谷歌如何设置无头模式
  • 推荐Bulk Image Downloader插件下载网页中图片链接很好用
  • 快速上手指南:使用 Minikube 在本地运行 Kubernetes 集群
  • HashMap的底层实现原理详解
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【css3】浏览器内核及其兼容性
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • create-react-app项目添加less配置
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • Java小白进阶笔记(3)-初级面向对象
  • JS学习笔记——闭包
  • Just for fun——迅速写完快速排序
  • LeetCode29.两数相除 JavaScript
  • MySQL QA
  • vue自定义指令实现v-tap插件
  • Webpack 4x 之路 ( 四 )
  • webpack4 一点通
  • yii2权限控制rbac之rule详细讲解
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 机器学习 vs. 深度学习
  • 聊聊redis的数据结构的应用
  • 使用权重正则化较少模型过拟合
  • 思否第一天
  • 微信支付JSAPI,实测!终极方案
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • 积累各种好的链接
  • ​如何防止网络攻击?
  • #vue3 实现前端下载excel文件模板功能
  • $.ajax()方法详解
  • (bean配置类的注解开发)学习Spring的第十三天
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (九)One-Wire总线-DS18B20
  • (力扣)1314.矩阵区域和
  • (论文阅读11/100)Fast R-CNN
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (四)linux文件内容查看
  • (原創) 物件導向與老子思想 (OO)
  • (转)shell调试方法
  • (转)Unity3DUnity3D在android下调试