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:以遞迴方式訪問網站頁面並建立網站中所有超連結列表。