我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 1710|回复: 1

[DIY秀] 树莓派 SAKS 扩展板挑战应用 之 站点宕机指示

[复制链接]
飞天小猪20 该用户已被删除
发表于 2015-10-6 08:03:10 | 显示全部楼层 |阅读模式
本文所介绍的内容基于树莓派瑞士军刀扩展板(SAKS),由于 SAKS 基于树莓派通用的 GPIO 设计,文中的原理和代码也适用于其他情况。
本文由树莓派实验室创作,遵循CC协议(署名-非商业性使用-禁止演绎-相同方式共享),欢迎树莓派爱好者们遵循协议内容转载传播。谢绝不遵守协议的转载和抄袭。
本节介绍通过 SAKS 扩展板的 LED 指示任意网站的可访问状况。如果你有一个自己的网站或者博客,确保它能够在任何时候都能正常访问是很有必要的。当被监测的网站无法访问或者发生错误时,红色或黄色 LED 亮起,而当网站能正常访问时,绿色指示灯亮起。
本例程中涉及到的 SAKS 扩展板引脚编号如下:
功能
注释
BOARD
编码
BCM
编码
wiringPi
编码
LED排灯LED-D7第6个LED(绿)28131
LED-D8第7个LED(黄)26711
LED-D9第8个LED(红)24810
站点无法访问通常是因为:
1.服务器故障,Web 服务进程无法正常响应。此时无法获得任何请求响应。
2.服务器程序出错,Web 服务经常可以正常响应。此时可以获得请求的错误信息。
3.服务器或监测程序没有接入网络,或两者之间网络出现故障。

上述3种情况中,1、3均表现为请求超时或请求被拒绝,此时我们希望红色 LED 亮起提示管理员宕机。情况2通过错误代码可判断无法访问的具体原因,此情况下我们亮起黄色 LED 提示管理员需要排除错误。(实际上还可以根据需要,将请求返回的错误代码编号通过 SAKS 扩展板的数码管显示出来。)
以下程序代码将对预先设定的网址周期性进行监测,通过发送 HTTP 请求尝试获得应答。并对应答的结果来指示状态。
# -*- coding: utf-8 -*-import RPi.GPIO as GPIOimport timeimport urllib2import socketGPIO.setmode(GPIO.BCM)# 输出模式GPIO.setup(1, GPIO.OUT)GPIO.setup(7, GPIO.OUT)GPIO.setup(8, GPIO.OUT)# 要检测的网址url = "http://shumeipai.nxez.com/"# 设置超时时间10秒urllib2.socket.setdefaulttimeout(10)# 初始化状态status = 0# 检测频率间隔interval = 60def check():global statustry:response = urllib2.urlopen(url)if response.code == 200:status = 200except urllib2.HTTPError, e:if e.code == 500 or e.code == 404 or e.code == 403:status = e.codeelse:status = 0except urllib2.URLError, e:print estatus = 0finally:print statuswhile True:check()#正常状态,绿灯亮if status == 200:GPIO.output(1, GPIO.LOW)GPIO.output(7, GPIO.HIGH)GPIO.output(8, GPIO.HIGH)#异常状态,黄灯亮elif status == 500 or status == 404 or status == 403:GPIO.output(1, GPIO.HIGH)GPIO.output(7, GPIO.LOW)GPIO.output(8, GPIO.HIGH)#错误状态,红灯亮else:GPIO.output(1, GPIO.HIGH)GPIO.output(7, GPIO.HIGH)GPIO.output(8, GPIO.LOW)time.sleep(interval)以上代码保存为 sitecheck.py,接下来运行。
sudo python sitecheck.py如果需要监测的网址数量是多个,可以对上面的代码进行完善。将轻触开关和数码管加入其中,数码管显示网址编号,而轻触开关切换当前指示网站的状态指示。
需要特别留意的是,当被检测的域名无法正常解析时,某些ISP会自作主张地返回一个200状态(通常是类似114的页面),这种情况下程序对站点可访问性的判断可能会受到影响,请根据您的ISP特征添加必要的逻辑判断。
后面我们后面将开始介绍如何基于 SAKS 扩展板 DIY 各种有趣、实用的东西,欢迎持续关注!
本文属于《树莓派瑞士军刀扩展板(SAKS)DIY 教程》系列文章,查看系列文章目录,请访问:http://shumeipai.nxez.com/swiss- ... ry-pi-diy-tutorials
本文来自:树莓派实验室
链接地址:http://shumeipai.nxez.com/2015/0 ... site-detection.html
回复

使用道具 举报

  • TA的每日心情
    开心
    4 天前
  • 签到天数: 102 天

    [LV.6]常住居民II

    49

    主题

    1万

    回帖

    7万

    积分

    三级逆天

    积分
    73176

    终身成就奖特殊贡献奖原创先锋奖社区居民忠实会员社区劳模最爱沙发社区明星原创达人优秀斑竹奖宣传大使奖

    QQ
    发表于 2015-10-7 00:02:44 | 显示全部楼层
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    论坛开启做任务可以
    额外奖励金币快速赚
    积分升级了


    Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

    本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

    平平安安
    TOP
    快速回复 返回顶部 返回列表