我正在编写一个脚本来监视网站上的一些内容,其中之一是监视 http 状态及其响应时间。
在脚本中,我运行一个命令来获取http_status:(http命令由以下提供:httpie:一个类似Curl的人类工具)
http -timeout 10 -follow -h http: //$I/ | grep "HTTP\/1.1" | awk '{print $2}'
该命令将返回状态本身,即:200、404、403 等,或者将返回另外两个内容:
http: error: Request timed out (10.0s)
或者
http: error: ConnectionError ..."
注意:增加超时并不能解决我的问题。我需要它是10秒。
返回这两个其他选项时如何输入特定代码?例如超时返回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"*)
。