最近碰到系统有时候会访问不了,想写一个程序来检测站点是不是可以访问的功能,正好在学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. [b0040] python 归纳 (二五)_多进程数据共享和同步_信号量Semaphore

    # -*- coding: utf-8 -*- """ 多进程同步 使用信号量 multiprocessing.Semaphore 逻辑: 启动5个进程,打印,每个各自睡 ...

  2. MongoDB安装调试

    1:安装 去mongodb的官网http://www.mongodb.org/downloads下载32bit的包 解压后会出现以下文件 在安装的盘C:下建立mongodb文件夹,拷贝bin文件夹到该 ...

  3. Linux—系统关机命令详解

    不管是重启系统还是关闭系统,首先要运行 sync 命令,把内存中的数据写到磁盘中.将数据由内存同步写入到硬盘中. [root@localhost ~]# sync 一.shutdown命令 # 立刻关 ...

  4. Weblogic的三种部署方式

    Weblogic的三种部署方式     在weblogic中部署项目通常有三种方式:第一,在控制台中安装部署:第二,将部署包放在domain域中autodeploy目录下部署:第三,使用域中配置文件c ...

  5. Nginx 配置高可用的集群

    1.什么是 nginx 高可用 (1)需要两台 nginx 服务器 (2)需要 keepalived (3)需要虚拟 ip 2.配置高可用的准备工作 (1)需要两台服务器 192.168.17.129 ...

  6. 批量bat脚本复制文件或文件夹

    主要用于在本地下,复制文件或文件夹到当前文件夹 @echo off echo 复制文件或文件夹到当前文件夹(复制文件选择[],复制文件夹选择[]) set /p num=输入选择的数字: : set ...

  7. 初学JavaScript正则表达式(十二)

    text / exec方法 text() var reg1 = /\w/; var reg2 = /\w/g; reg1.test('a') === true reg2.test('a') === t ...

  8. while语句 break和continue

    1.whlie 循环 基本条件 :while 条件: 代码块(循环体) else: 当上面的条件为假的,才会执行 执行顺序: 判断条件是否为真,如果为真,执行循环体,然后判断条件,...直到循环条件为 ...

  9. ADB端口5037被占用 导致adb 停止工作

    解决ADB端口占用问题 方式一 5037为adb默认端口,若5037端口被占用,打开cmd,输入以下指令, 1.查看占用端口的进程PID  netstat -aon|findstr 5037 2. 通 ...

  10. 【声明式事务】Spring事务介绍(一)

    事务管理对于企业应用来说是至关重要的,当出现异常情况时,它也可以保证数据的一致性. Spring事务有两种管理方式:编程式事务和声明式事务 编程式事务使用TransactionTemplate或者直接 ...