2013-08-15 4 views
5

URLにcURL GETリクエストを発行し、返されたHTTPコードに基づいて、返されたHTTPデータで何かをするかどうかを決定します。CURLシェルスクリプトでタイムアウト/エラーをキャッチする方法は?

たとえば、cURLによる特定のurlリクエストのHTTPコードが有効(タイムアウトまたはエラーではありません)の場合、システムのどこかの要求から返されたデータを保持します。

返されたHTTPコード(またはタイムアウト)を実際に 'キャッチ'してそれに基づいて決定するにはどうすればよいですか?

+0

[この回答](http://stackoverflow.com/questions/2924422/how-do-i-determine-if-a-web-page-exists-with-shell-scripting)は密接に関連しています... – user000001

答えて

21

script.sh http://www.google.com/として以下を実行してください。
-Dから
-oをファイルにヘッダをダンプ -
-sをファイルに応答を書く -
-wサイレントで - さらなる処理のため、指定された変数

#!/bin/bash 

RESPONSE=response.txt 
HEADERS=headers.txt 

status=$(curl -s -w %{http_code} $1 -o $RESPONSE) 

# or 
#curl -s -D $HEADERS $1 -o $RESPONSE 
#status=$(cat $HEADERS | head -n 1 | awk '{print $2}') 

echo $status 

使用$status$RESPONSEの表示値を。

+0

ありがとうございました。それは働いている! – Ron

+5

+1にはCLIオプションの説明が含まれています。彼らはmanファイルに入っていますが、ポスターの部分にわずかな作業だけで、抽象度のレベルを上げることはいいことです。もっと多くの人がこれをやりたいと思う。 – L0j1k

+0

%サインウィンドウは特定ですか? –