shell脚本_查找无效网址

时间:2021-12-06 14:29:36

#!/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,因此还需要手动检查返回的状态。