linux shell 查找网站中无效的链接
要识别链接并从中找出无效链接,我们使用lynx和curl命令。其中lynx有一个选项-traversal,能够以递归方式访问网站页面并建立网站中所有超链接的列表。用curl验证每一个链接的有效性。
脚本如下:
#! /bin/bash
#文件名:find_broken.sh
#用途:查找网站中的无效连接
if [ $# -ne 1 ]
then
echo -e "Usage:$0 URL \n"
exit 1
fi
echo Broken links
mkdir /tmp/$$.lynx #$$:表示当前脚本运行的进程号
cd /tmp/$$.lynx
lynx -traversal $1 > /dev/null
count=0
sort -u reject.data > links.txt
#sort -u 与uniq命令基本相似,区别参考 https://blog.csdn.net/yilovexing/article/details/79237214
while read link
do
output=`curl -I $link -s | grep "HTTP/.*OK"`
if [[ -z $output ]]
then
echo $link
let count++
fi
done < links.txt
[ $count -eq 0 ] && echo echo No broken links found
工作原理:lynx -traversal URL会在工作目录下生成数个文件,其中包括reject.date,该文件包含网站中的所有链接。sort -u 用来建立一个不包含重复项的列表。然后我们迭代每一个链接,并通过curl -I检验接受到的响应头部。如果响应头部的第一行包含HTTP/1.0 200 OK,就表示该链接正常。
lynx命令
作用:终端上的纯文本模式的网页浏览器,没有JS引擎,不支持CSS排版、图形、音视频等多媒体信息。
格式:lynx [参数]
参数:
-case:搜索字符串时区分大小写
-ftp:关闭ftp功能
--color:激活彩色模式
--reload:更新首页代理服务器的缓存
--help:显示帮助
-traversal:以递归方式访问网站页面并建立网站中所有超链接列表。
原文地址:https://www.cnblogs.com/xiangbing123/p/15000718.html
- 【Go 语言社区】Golang 可变参数的使用
- 【Go 语言社区】Golang源码解读之map
- 一则报警信息所折射出来的诸多问题(r9笔记第14天)
- Java面试系列17-编程题-读取服务器字符、实现序列化、计数器、1000阶乘、n出列问题等
- tensorflow(一)windows 10 64位安装tensorflow1.4与基本概念解读tf.global_variables_initializer
- 容灾切换中的数据库宕机问题简单分析(一) (r9笔记第12天)
- Java面试系列14
- linux下搭建django记录笔记,未完稿,节后继续
- Java案例-打印图形与π
- 关于两个简单问题的分析(r9笔记第10天)
- 初步解读Golang中的接口相关编写方法
- Go语言获取Windows下文件是否隐藏
- Java案例-求a+aa+aaa+.......+aaaaaaaaa=?
- 【Go 语言社区】算法课程 第一季 第6节 建立三角形
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- hive数据加载
- Python 技术篇-使用opencv读取图片实例演示,python安装opencv库
- 关于页更改并加入一些在线服务
- Hadoop-2.6.0为基础的Hive安装
- Python 技术篇-opencv读取中文路径图片报错及解决办法
- Javaweb鼠标事件案例分析—鼠标移入移出表格颜色变化
- docker registry V2私有仓库搭建
- Python 路径问题:cv2.error: OpenCV(4.1.0)...size.width>0 && size.height>0 in function 'cv::imshow'. 原因与解决
- 算法案例分析—字符串模式匹配算法
- Docker-软件工程集装箱技术
- PyQt5 技术篇-获取电脑屏幕桌面的宽、高和分辨率
- 使用Python快速抠图
- 值得白嫖的数据库常用操作语句汇总(数据库、数据表、数据操作)
- JavaScript 技术篇-js正则表达式匹配字符串左右两边是否包含空格
- 初入编程吓破胆?那是你还不懂这些!(高能预警)