以编程方式检查网站是否正常工作?

时间:2011-09-20 08:08:08

标签: python

我有一个WordPress自我托管的博客,直到上周。更新WordPress后,现在该网站工作正常。但我想在接下来的几天里经常检查一下。是否可以编写一个程序来执行此操作以便我可以安排它?

请提出一些建议。我认为Python是该程序的语言,但我对任何语言都持开放态度。

7 个答案:

答案 0 :(得分:4)

您可以使用简单的HTTPConnection测试网站是启动还是关闭,发送“OPTIONS *”请求,如果答案是“200 OK”,您的网站已启动,否则请检查http错误码。

import httplib
connection = httplib.HTTPConnection(your_host, port_probably_80)
connection.request("OPTIONS", "*")
response = connection.getresponse()
if response.status != httplib.OK or response.reason != "OK":
   print "Down"
else:
   print "Up :)"

答案 1 :(得分:1)

执行HTTP查询并查看结果是否为200 OK。您可以使用PycURL

轻松完成此操作

文档中的示例:

import pycurl
c = pycurl.Curl()
c.setopt(pycurl.URL, "http://example.com")
c.setopt(pycurl.FOLLOWLOCATION, 1)
c.perform()
print c.getinfo(pycurl.HTTP_CODE)

答案 2 :(得分:0)

最近我浏览了以下博客。提出一些好的想法来解决问题。

http://blogs.msdn.com/b/vijay/archive/2009/04/23/how-to-check-programmatically-if-a-website-is-running.aspx

答案 3 :(得分:0)

如果您想从本地计算机上检查并且安装了xampp或类似的东西,那么我能想到的第一件事就是简单的解决方案。 你只需要编写php脚本,它将通过php fopen连接到你的网站并阅读一些内容。如果您将获得内容,则表示您的网站已启用。 只写出类似的东西:

// Website url to open
$websiteUrl = 'http://website.com/is_up;
$handle = fopen($websiteUrl, "r");

答案 4 :(得分:0)

你的程序应该向网站发送一个get请求,接收html(验证你得到“200 OK”),然后比较字符串的开头和你应该知道它的内容(比较所有内容,直到第一个依赖的东西)关于内容)。如果比较失败,那么您应该怀疑您的网站可能已关闭,并自行检查。

答案 5 :(得分:0)

这最适合一个小脚本,甚至不需要python:

while curl -q http://yoursite | grep -q some_string; do sleep 120; done; date; echo Site offline

其中some_string是一个只存在的字符串,当你的网站工作正常时(即数据库中的一些内容,如果a不存在,php)不工作或b)数据库连接死亡或c)网站完全离线。

答案 6 :(得分:0)

下面的bash脚本可能对这里结束搜索的人有所帮助。

注意,fakePhrase用于检测ISP"搜索助手"广告软件HTTP响应。

#!/bin/bash

fakePhrase="verizon"
siteList=(
  'http://google.com'
  'https://google.com'
  'http://wikipedia.org'
  'https://wikipedia.org'
  'http://cantgettherefromhere'
  'http://searchassist.verizon.com'
)

exitStatus=0

function isUp {
  http=`curl -sL -w "%{http_code}" "$1" -o temp_isUp`
  fakeResponse=`cat temp_isUp | grep $fakePhrase`
  if [ -n "$fakeResponse" ]; then
    http=$fakePhrase
  fi
  case $http in
  [2]*)
    ;;
  [3]*)
    echo 'Redirect'
    ;;
  [4]*)
    exitStatus=4
    echo "$1 is DENIED with ${http}"
    ;;
  [5]*)
    exitStatus=5
    echo "$1 is ERROR with ${http}"
    ;;
  *)
    exitStatus=6
    echo "$1 is NO RESPONSE with ${http}"
    ;;
  esac
}

for var in "${siteList[@]}"
do
  isUp $var
done

if [ "$exitStatus" -eq "0" ]; then
  echo 'All up'
fi

rm temp_isUp
exit $exitStatus