1. 程式人生 > 其它 >linux shell 查詢網站中無效的連結

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