2010-05-27 64 views
48

我想製作一個程序,可以將一系列漫畫掃描轉換爲一個pdf文件,並且我不想嘗試下載圖片以確定我是否擁有正確的網址。是否有shell腳本命令,我可以用它來檢查網頁是否存在?如何通過shell腳本確定網頁是否存在?

+0

哪個外殼? UNIX shell? Windows命令提示符? Windows Powershell? – zneak 2010-05-27 20:00:10

+0

UNIX,我猜,因爲它有一個unix標籤。 – thepiercingarrow 2016-03-25 00:01:14

回答

87

下一個* NIX,您可以用curl發出一個簡單的HEAD請求(HEAD只要求頭,而不是頁面正文):

curl --head http://myurl/ 

然後,你可以只需要第一線,包含HTTP狀態代碼(200 OK,404未找到,等):

curl -s --head http://myurl/ | head -n 1 

再檢查,如果你有一個體面的響應(狀態碼爲200或3 **):

curl -s --head http://myurl/ | head -n 1 | grep "HTTP/1.[01] [23].." 

如果狀態代碼沒問題,將輸出第一行,如果不是,則輸出第一行。您還可以通過管道將到/ dev/null來獲得無輸出,並使用$?,以確定它是否工作或沒有:

curl -s --head http://myurl/ | head -n 1 | grep "HTTP/1.[01] [23].." > /dev/null 
# on success (page exists), $? will be 0; on failure (page does not exist or 
# is unreachable), $? will be 1 

編輯-s只是告訴curl不顯示「進度條」。

+3

爲了減少字符串解析並檢查重定向到不存在的頁面,可以使用'curl --silent --head --location --output/dev/null --write-out'%{http_code}' http://en.wikipedia.org/wiki/tla | grep'^ 2'' – bukzor 2013-08-16 16:39:18

+3

使用--fail:http://stackoverflow.com/a/12199125/376366 – 2013-11-29 23:18:00

+0

腳本可自動驗證多個文件:https://gist.github.com/igilham/12eb33ab8a86f1e815d2 – IanGilham 2014-09-18 16:05:15

-2

wgetcURL將完成這項工作。有關詳細信息和下載位置,請參閱此處wgetcURL。提供這些命令行工具的URL並檢查響應。

+0

Pfff ...爲什麼downvotes(沒有解釋,介意你),如果答案是正確的,簡要的和內容豐富的? – 2016-03-02 12:03:15

+1

我沒有投票,但如果我不得不猜測,這是因爲只有URL的答案[不鼓勵](https://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-鏈接別處 - 真的好 - 答案)。 – zneak 2017-07-20 00:08:11

+0

謝謝。 TBH,問題是「是否有shell腳本命令可以用來檢查網頁是否存在?」我的回答是「wget或cURL將完成這項工作」,以及指向每個命令的鏈接以及可以檢查這些命令調用的響應的解釋。從任何角度來看,這不僅僅是一個URL唯一的答案,而且與當時出現的其他答案(修訂版)一樣:https://stackoverflow.com/revisions/2924444/1。唉,顯然是一個糟糕的業力日:-) – 2017-07-22 13:39:32

17

使用cURL獲取狀態碼並檢查所需的值。

status=$(curl -s --head -w %{http_code} http://www.google.com/ -o /dev/null) 
echo $status 
8

首先確保沒有授權任何issue.If要求授權,您提供的用戶名和密碼.Create一個shell腳本文件(checkURL.sh)並粘貼下面的代碼。

希望這會幫助你。

checkURL.sh

yourURL="http://abc-repo.mycorp.com/data/yourdir" 

if curl --output /dev/null --silent --head --fail "$yourURL" 
then 
    echo "This URL Exist" 
else 
    echo "This URL Not Exist" 
fi 

它在Nexus和其他信息庫爲我工作。

1

您可以隨時使用wget;我做的代碼更簡單。

if [[ $(wget http://url/ -O-) ]] 2>/dev/null 
    then echo "This page exists." 
    else echo "This page does not exist." 
fi 

使用-O-選項與wget意味着它會嘗試輸出頁面的內容,但只有當它的存在。所以如果沒有任何輸出,那麼該頁面不存在。 2>/dev/null只是將輸出(如果有的話)發送到垃圾箱。

我知道這是逾期,但我希望這可以幫助。

相關問題