私はウェブサイトでいくつかのことを監視するスクリプトを書いています。そのうちの1つはhttpステータスと応答時間を監視することです。
スクリプトからhttp_statusを取得するコマンドを実行します。 (httpコマンドはhttpie:人間のためのCurlと同様のツールで提供されています。)
http -timeout 10 -follow -h http: //$I/ | grep "HTTP\/1.1" | awk '{print $2}'
このコマンドは、ステータス自体(たとえば、200、404、403など)を返すか、次の2つをさらに返します。
http: error: Request timed out (10.0s)
または
http: error: ConnectionError ..."
注:タイムアウトを増やしても問題は解決されませんでした。 10秒が必要です。
これら2つの異なるオプションを返すときに特定のコードをどのように入力できますか?タイムアウトリターン9999
とエラーなど8888
。
答え1
簡単なcase
説明であなたが望むことをすることができます。
case "$(http_status)" in
"case 1")
return 199
;;
"case 2")
return 198
;;
*)
# All is well; do nothing
;;
esac
*"timed out"*)
または、同じワイルドカード文字を使用できます*"ConnectionError"*)
。