使用Python的socket对TCP端口传输数据检测

浏览: 1925

这一两天遇到的一个需求,需要在一个内网环境的机器上检测数据流是否正常

环境如下:

linux

centos 6

python

# -*- coding: utf-8 -*-
import socket
from email.mime.text import MIMEText
from email.header import Header
#设置socket设置
import smtplib,email
#设置你传输的格式
#AF_INET是传输协议,是IPV4,如果是IPV6的话就需要修改为AF_INET6
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#设置检测地址和端口地址
address = ('0.0.0.0', 10086)
s.connect(address)
#接受数据的大小
d = s.recv(1024)
#导入邮箱设置
# 第三方 SMTP 服务
mail_host = "smtp.exmail.qq.com" # 设置服务器 企业邮箱
mail_user = "xiaerkang@exmail.com" # 用户名
mail_pass = "xiaerkang" # 口令
sender = 'xiaerkang@exmail.com'#发件人
receivers = ['1375303346@qq.com'] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱,多个
#定义一个邮件发送函数
def send():
# 定义发送内容
# 文本内容
word="0.0.0.0:0端口出现异常"
message = MIMEText(word, 'plain', 'utf-8')
message['From'] = Header("端口异常检测", 'utf-8')
message['To'] = Header("检测", 'utf-8')
# 主题
subject = '端口异常检测'
message['Subject'] = Header(subject, 'utf-8')
try:
# 发送邮件操作
smtpObj = smtplib.SMTP()
smtpObj.connect(mail_host, port=25) # 25 为 SMTP 端口号
smtpObj.login(mail_user, mail_pass)
smtpObj.sendmail(sender, receivers, message.as_string())
print "邮件发送成功"
except smtplib.SMTPException:
print "Error: 无法发送邮件"
#进行接口数据判断
#因为如果数据量很小,或者为空就说明断了
if len(d) <= 5 or d is None:
print "data have error"
#发送邮件
send()
else:
print "666"
s.close()

最后在linux机器上设置每十分钟检测一次

编写定时任务

crontab -e

输入

*/10 * * * * python /home/py/xiaerkang/server.py

搞定,其实这个流程是可以优化,加个对数据库写入日志,这样我们就可以发现是否在正常跑

推荐 5
本文由 夏尔康 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

1 个评论

最近终于老师的连载了

要回复文章请先登录注册