#!/bin/bash
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;
#reject.dat文件包含所有的链接
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 broken links found. #中括号里面内容为真时,执行后面的输出
Lynx只会返回Https404的URL,因此会遗漏其他错误类型的URL,因此还需要手动检查返回的状态。