首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从bash/shell脚本评估http响应码?

如何从bash/shell脚本评估http响应码?
EN

Stack Overflow用户
提问于 2010-02-08 16:25:33
回答 11查看 274.2K关注 0票数 241

我有一种感觉,我错过了显而易见的东西,但在man [curl|wget]或google上并没有成功("http“是一个糟糕的搜索词)。我正在寻找一个快速和肮脏的修复我们的一个网站服务器,经常失败,返回状态码500与错误信息。一旦发生这种情况,就需要重新启动。

由于根本原因似乎很难找到,我们的目标是快速修复,希望这将足以弥补时间,直到我们可以真正修复它(服务不需要高可用性)

建议的解决方案是创建一个cron作业,该作业每5分钟运行一次,检查http://localhost:8080/。如果返回状态代码为500,则with服务器将重新启动。服务器将在一分钟内重新启动,因此无需检查已在运行的重启。

所讨论的服务器是ubuntu 8.04的最小安装,安装的软件包刚好足以运行它当前所需的程序。在bash中完成这项任务并不是很困难,但我希望它能在这样一个最小的环境中运行,而不需要安装更多的解释器。

(我对脚本非常熟悉,将http状态代码分配给环境变量的命令/选项就足够了-这就是我一直在寻找但找不到的东西。)

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2010-02-08 17:48:46

我没有在500代码上测试过,但它可以在200,302和404等其他代码上运行。

response=$(curl --write-out '%{http_code}' --silent --output /dev/null servername)

注意,为--write-out提供的格式应用引号引用。根据@ibai的建议,添加--head以发出仅头部请求。这将节省检索成功时的时间,因为页面内容不会被传输。

票数 368
EN

Stack Overflow用户

发布于 2012-05-24 01:30:30

curl --write-out "%{http_code}\n" --silent --output /dev/null "$URL"

很管用。如果没有,你必须点击return来查看代码本身。

票数 48
EN

Stack Overflow用户

发布于 2017-10-24 22:56:30

今天我需要快速演示一些东西,然后想出了这个。我想如果有人需要类似行动要求的东西我会把它放在这里。

#!/bin/bash

status_code=$(curl --write-out %{http_code} --silent --output /dev/null www.bbc.co.uk/news)

if [[ "$status_code" -ne 200 ]] ; then
  echo "Site status changed to $status_code" | mail -s "SITE STATUS CHECKER" "my_email@email.com" -r "STATUS_CHECKER"
else
  exit 0
fi

这将发送一个电子邮件警报的状态从200的每一个变化,所以它是愚蠢的和潜在的贪婪。为了改进这一点,我将考虑遍历几个状态代码,并根据结果执行不同的操作。

票数 41
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2220301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档