我们需要检查一个页面的所有连接,是否是无效的,那么需要借助HTTP工具来处理的话,很简单了
我们可以借助lynx和curl,lynx有一个选项 -traversal,能够递归的方式获取页面,并且显示对应的超链接的列表,配合curl可以验证每一个连接的有效性
整体的查找脚本如下
#! /bin/bash
#用途: 查找无效连接 if [ $# -eq 2 ]; 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.dat > links.txt 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 no link is fai |
lynx -traversal URL 会在目录下生成数个文件,其中包含了reject.dat
sort -u用来建立一个不包含重复项的列表,我们依次的进行迭代遍历,并且通过curl -I来进行检验
如果响应头部的第一行包含了HTTP/1.0 200 OK,就说明连接正常,显示其他响应信息则失效,保存在link.txt