最近碰到系统有时候会访问不了,想写一个程序来检测站点是不是可以访问的功能,正好在学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. 【JavaWeb】jQuery对Ajax的支持

    jQuery对Ajax的支持 jQuery对Ajax进行封装,提供了$.ajax()方法 语法:$.ajax(options) 常用设置项 说明 url 发送请求地址 type 请求类型get|pos ...

  2. 配置同时使用 Gitlab、Github、Gitee(码云) 共存的开发环境

    首先确认已安装Git,可以通过 git –version 命令可以查看当前安装的版本. Mac OSX 中都已经安装了Git.但是,Git的版本未必是最新的. 可以通过命令 git clone htt ...

  3. vue+hammer.js完美实现长按、左滑,右滑等触控事件

    移动端使用手指直接操作的方式大受用户欢迎,这其中就包括了单点.多点.长按.双击等方式. 这么多触控事件,如果开发者自己实现,会浪费大量的时间和精力,快来看看 hammer.js 让我们轻松了多少吧. ...

  4. 【tf.keras】tf.keras模型复现

    keras 构建模型很简单,上手很方便,同时又是 tensorflow 的高级 API,所以学学也挺好. 模型复现在我们的实验中也挺重要的,跑出了一个模型,虽然我们可以将模型的 checkpoint ...

  5. Spring配置文件中的那些标签

    1. context:annotation-config 它的作用是隐式地向Spring容器注册AutowiredAnnotationBeanPostProcessor,CommonAnnotatio ...

  6. [日常] NOI2019 退役记

    这次要彻底退役了 开个坑先 Day -2 出发坐车去gz 好像和上次去雅礼的车是同一趟于是大家都以为和上次一样是 \(10:40\) 开车, 于是提前2h大概八点多就去坐公交了 到了之后取票, 发现票 ...

  7. 24种设计模式-策略模式(Strategy Pattern)

    一.优点: 1. 策略模式提供了管理相关的算法族的办法.策略类的等级结构定义了一个算法或行为族.恰当使用继承可以把公共的代码转移到父类里面,从而避免重复的代码. 2. 策略模式提供了可以替换继承关系的 ...

  8. C++ 实现 查找进程, 杀死进程, 启动进程, 进程重启

    头文件: #include <Windows.h>#include <tlhelp32.h>#include <tchar.h>#include <Shell ...

  9. Ubuntu18.4编译pmon,缺少makedepend和pmoncfg

    提示makedepend找不到解决方法:$ apt-cache search makedependxutils-dev - X Window System utility programs for d ...

  10. 深度解密Go语言之unsafe

    目录 指针类型 什么是 unsafe 为什么有 unsafe unsafe 实现原理 unsafe 如何使用 获取 slice 长度 获取 map 长度 map 源码中的应用 Offsetof 获取成 ...