最近碰到系统有时候会访问不了,想写一个程序来检测站点是不是可以访问的功能,正好在学python,于是写了一个方法来练练手,直接上代码。

import urllib.request
import smtplib
from email.mime.text import MIMEText
import time # 封装HTTP GET请求方法
def http_get(url, params='',headers={}):
if len(params)>0:
url=url+'?'+params
print('发起get请求:%s' % url)
request = urllib.request.Request(url, headers)
try:
response = urllib.request.urlopen(request)
#print("response.status:",response.status)
responseHTML = response.read().decode('utf-8')
return True,responseHTML,
except Exception as e:
msg=('发送请求get失败,原因:%s' % e)
return False,msg # 封装HTTP POST请求方法
def http_post(url, data='',headers={}):
print('发起post请求:%s' % url)
request = urllib.request.Request(url, headers)
try:
response = urllib.request.urlopen(request, data)
#print("response.status:",response.status)
responseHTML = response.read().decode('utf-8')
return True,responseHTML
except Exception as e:
msg=('发送请求post失败,原因:%s' % e)
return False,msg # 封装SendMail发送邮件方法
def send_mail( recv, title, content,username='发送人邮箱@163.com', passwd='发送人邮箱密码', mail_host='smtp.163.com', port=25):
'''
发送邮件函数,默认使用163smtp
:param recv: 邮箱接收人地址,多个账号以逗号隔开
:param title: 邮件标题
:param content: 邮件内容
:param username: 邮箱账号 xx@163.com
:param passwd: 邮箱密码
:param mail_host: 邮箱服务器
:param port: 端口号
:return:
'''
try:
msg = MIMEText(content) # 邮件内容
msg['Subject'] = title # 邮件主题
msg['From'] = username # 发送者账号
msg['To'] = recv # 接收者账号列表 (启用这一行代码,所有收件人都可以看到收件的地址,不启用只可以看到自己的地址)
smtp = smtplib.SMTP(mail_host, port=port) # 连接邮箱,传入邮箱地址,和端口号,smtp的端口号是25
smtp.login(username, passwd) # 发送者的邮箱账号,密码
smtp.sendmail(username, recv.split(','), msg.as_string())
# 参数分别是发送者,接收者,第三个是把上面的发送邮件的内容变成字符串
smtp.quit() # 发送完毕后退出smtp
print('发送邮件成功.')
except smtplib.SMTPException as e:
print("发送邮件失败.",e) #===============Main 开始=======
#本程序用来检测指定站点是否能访问,如果不能访问发邮件提示
if __name__=="__main__":
#要检测的地址路径
urlList=["http://www.baidu.com/","http://sys1.abc.com:9001/","http://sys2.abc.com:9005/test/check1.do?Action=check"]
print("============检测站点是否可以访问=========================")
print("============程序开始=====================================")
#mail_title=""
mail_content=""
for url in urlList:
result=http_get(url)
if(result[0]):
#print(result[1][:100])
#print(len(result))
#print(result[1].find("html"))
if result[1].find("html")<0:
tempMsg="[ "+url+" ] 访问异常,请立即查看Server是否正常。"
print(tempMsg)
mail_content+=tempMsg
else:
tempMsg="[ "+url+" ] 访问正常,请慢慢喝茶。"
print(tempMsg)
else:
#404/500
tempMsg="[ "+url+" ] "+result[1]
print(tempMsg)
mail_content+=tempMsg
print("=================================================")
if len(mail_content)>1:#如果有网站异常才发邮件
mail_rev="收件邮箱1@163.com,收件邮箱2@qq.com" #报错以后接受信息的邮箱
mail_title="系统访问异常,请立即查看Server是否正常。"
print(mail_title)
send_mail(mail_rev,mail_title,mail_content)
else:
print("所有站点检测完毕系统一切正常")
print("============程序结束=====================================")
time.sleep(60)#显示60秒 #===============Main 结束=======

python 检查站点是否可以访问的更多相关文章

  1. windows下python检查文件是否被其它文件打开

    windows下python检查文件是否被其它文件打开.md 有时候我们需要能够判断一个文件是否正在被其它文件访问,几乎不可避免的要调用操作系统接口 from ctypes import cdll i ...

  2. JavaScript如何检查网站是可以访问

    <html><head><title>JavaScript如何检查网站是可以访问</title> <script> //JavaScript ...

  3. 打开FTP服务器上的文件夹时发生错误,请检查是否有权限访问该文件夹

    打开FTP服务器上的文件夹时发生错误,请检查是否有权限访问 在win98,winme,win2000,win2003下都能正常上传文件夹,但在winxp+sp2下同样的文件夹就可能出现问题 1. 打开 ...

  4. Python第五天 文件访问 for循环访问文件 while循环访问文件 字符串的startswith函数和split函数 linecache模块

    Python第五天   文件访问    for循环访问文件    while循环访问文件   字符串的startswith函数和split函数  linecache模块 目录 Pycharm使用技巧( ...

  5. “打开ftp服务器上的文件夹时发生错误,请检查是否有权限访问该文件夹"

    阿里云虚拟主机上传网站程序 问题场景:网页制作完成后,程序需上传至虚拟主机 注意事项: 1.Windows系统的主机请将全部网页文件直接上传到FTP根目录,即 / . 2. 如果网页文件较多,上传较慢 ...

  6. Python获得文件时间戳 异常访问监控 邮件定时提醒

    Python获得文件时间戳  异常访问监控 邮件定时提醒

  7. python统计apache、nginx访问日志IP访问次数并且排序(显示前20条)【转】

    前言:python统计apache.nginx访问日志IP访问次数并且排序(显示前20条).其实用awk+sort等命令可以实现,用awk数组也可以实现,这里只是用python尝试下.   apach ...

  8. Python检查数组元素是否存在类似PHPisset()方法

    Python检查数组元素是否存在类似PHP isset()方法 sset方法来检查数组元素是否存在,在Python中无对应函数,在Python中一般可以通过异常来处理数组元素不存在的情况,而无须事先检 ...

  9. python检查URL是否能正常访问

    https://blog.csdn.net/u010798367/article/details/53008439 今天,项目经理问我一个问题,问我这里有2000个URL要检查是否能正常打开,其实我是 ...

随机推荐

  1. JDBC API浅析

    使用java开发数据库应用程序一般都需要用到四个接口:Driver.Connection.Statement.ResultSet 1.Driver接口用于加载驱动程序 2.Connection接口用于 ...

  2. 【bzoj1997】[Hnoi2010]Planar(平面图+2-sat)

    传送门 几乎和这个题一样,就不说题意了,比较特殊的点就是,这里有个结论: 平面图的边数\(m<3n-6\),\(n\)为点数. 所以我们可以通过这个减枝,\(m\)较大时直接输出\(no\).小 ...

  3. luoguP3258 [JLOI2014]松鼠的新家

    树上差分 树上差分分析 使点x到点y的路径上(链上),全加上一个值,可以选择使用树上差分(不用线段树乱搞.... 首先,和普通的差分一样,要有一个tag.然而,对于一个结点,我们需要求出它全部儿子的t ...

  4. 一,java框架学习

    一,java框架学习 Hibernate概述Hibernate是一个开放源代码的ORM(对象关系映射)框架,对jdbc进行了轻量级的封装,是的java开发人员可以使用面向对象编程思想操作数据库,简化操 ...

  5. 【转】基于Bootstrap的超酷jQuery开关按钮插件

    基于Bootstrap的超酷jQuery开关按钮插件

  6. 最短路问题的三种算法&模板

    最短路算法&模板 最短路问题是图论的基础问题.本篇随笔就图论中最短路问题进行剖析,讲解常用的三种最短路算法:Floyd算法.Dijkstra算法及SPFA算法,并给出三种算法的模板.流畅阅读本 ...

  7. tf.summary.scalar()和tf.summary.histogram

    用法: 1.tf.summary.scalar 用来显示标量信息,其格式为: tf.summary.scalar(tags, values, collections=None, name=None) ...

  8. Python 可执行对象

    Python 可执行对象 eval/repr eval eval 可以执行字符串类型的表达式 (或 compile() 创建的代码对象(code object) ) 并返回执行结果 eval(expr ...

  9. ORB-SLAM2初步(Tracking.cpp)

    今天主要是分析一下Tracking.cpp这个文件,它是实现跟踪过程的主要文件,这里主要针对单目,并且只是截取了部分代码片段. 一.跟踪过程分析 首先构造函数中使用初始化列表对跟踪状态mState(N ...

  10. Win10修改hosts文件并配置DNS

    1.打开C:\Windows\System32\drivers\etc目录 2.去掉hosts文件的只读属性 3.添加dns解析配置 127.0.0.1           www.example.c ...