广告
返回顶部
首页 > 资讯 > 后端开发 > Python >shell+Python实现简单的链路监
  • 345
分享到

shell+Python实现简单的链路监

链路简单shell 2023-01-31 07:01:22 345人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

背景:游戏公司,服务器上有充值服,世界服,经分服务器等,和前端的game有链接通信,为防止链接通信故障导致线上业务中断,需要一个小脚本时刻监控线上链接状况。涉及:shell、python2.6、126免费邮箱配置:vim /usr/ligh

背景:游戏公司,服务器上有充值服,世界服,经分服务器等,和前端的game有链接通信,为防止链接通信故障导致线上业务中断,需要一个小脚本时刻监控线上链接状况。

涉及:shellpython2.6、126免费邮箱

配置:

vim /usr/lightserver/server/operationanalysisserver/config.xml -->环境不同,这里只做范例
<?xml version="1.0" encoding="utf-8" ?>
<Root>
<Connect index="0" GSIP="192.168.0.100" GSPort="8002" DBIP="192.168.0.110" DBPort="3306" LoginName="game" PassWord="game" DBName="oaserver1"/>
<Connect index="1" GSIP="192.168.0.100" GSPort="8004" DBIP="192.168.0.110" DBPort="3306" LoginName="game" Password="game" DBName="oaserver2"/>
<Server IP="192.168.0.110"/>
</Root>

shell脚本:

#!/bin/bash 
WORK_DIR="/usr/lightserver"
SERVER="worldserver gmserver operationanalysisserver chargeserver"
MaiL_LIST="*********@wo.cn *********@126.com"
while :
do
        NUM=0
        sleep 5
        for i in $SERVER
        do
          IP=`awk -F"\"" '/GSIP/{print $4}' $WORK_DIR/server/operationanalysisserver/config.xml`  -->#(这里没有使用$SERVER是因为配置文件可能有差异,但是IP是相同的)

            for j in $IP
                do
                        NUM=$(($NUM+1))
                        PID=`ps aux|grep $WORK_DIR/server/$i/unix/$i|grep -v grep|awk '{print $2}'|sed -n 1p`
                        if [ -z $PID ] ;then
                                PID=0
                        fi
                        if lsof -p $PID|grep -v grep|grep -v Mysql|grep $j|grep ESTABL > /dev/null 2>&1;then
                                continue
                        else
                                echo "`date "+%Y-%m-%d %X"` $j link disconnected"
                                echo "-----------------------------------------------------------------"
                                if [ -f /usr/local/check_server/lock/link_alert.lck ];then    -->#短信通知有限制,1天最多只能发送10条,所以这里做了限制本次错误只发送1条,若无限制短信发送可直接省略此段,就是每5秒发一次。
                                        continue
                                else
                                        mkdir -p /usr/local/check_server/lock
                                        touch /usr/local/check_server/lock/link_alert.lck
                                        for m in $MAIL_LIST
                                        do
                                        Python /usr/local/check_server/send_mail.py "Server Fault" "Links may be a problem,`date "+%Y-%m-%d %X"` $j link disconnected" "$m"  -->#这里的收件人和平常邮件接收人一样。
                                        done
                                fi
                        fi
                done
        done
        if [ $NUM -le `netstat -nat|grep -v grep|grep ESTABL|awk '{print $5}'|grep -v 0.0.0.0|egrep '(8002|8004)'|wc -l` ];then
                if [ -f /usr/local/check_server/lock/link_alert.lck ];then
                        rm -rf /usr/local/check_server/lock/link_alert.lck 
                fi
        fi
done

python脚本:

#!/usr/bin/env python
#coding: utf-8
__author__ = 'Yong'
__version__ = '1.0.0'


import os
import sys
import smtplib
from email.mime.text import MIMEText
from email.header import Header


def send_mail(s, i, r):

    #Subject = 'python test mail'
    Subject = s
    #mail_info = 'test from python3'
    mail_info = i
    Receiver = r

    Smtp_Server = 'smtp.126.com'   --> #这里用的是126的服务器,也可用公司的,做发件方使用
    Username = '*******'   --> #邮箱名,
    Passwd = '*******'     --> #邮箱密码

    if Username.find('@') < 0:
        Sender = Username + '@126.com'
    else:
        Sender = Username



    msg = MIMEText(mail_info, 'plain', 'utf-8')
    msg['Subject'] = Header(Subject, 'utf-8')

    smtp = smtplib.SMTP()
    smtp.connect(Smtp_Server)
    smtp.login(Username, Passwd)
    smtp.sendmail(Sender, Receiver, msg.as_string())
    smtp.quit()


if __name__ == '__main__':
    if len(sys.argv) != 4:
        print 'Usage:{0} 邮件主题 邮件内容 收件人地址\n'.fORMat(sys.argv[0])
        sys.exit(1)
    send_mail(sys.argv[1], sys.argv[2], sys.argv[3])


小建议:联通的手机可用186邮箱,移动的可使用139邮箱。也可使用微信报警更多扩展需要博友们开拓,笔者不才就不一一实现了。


--结束END--

本文标题: shell+Python实现简单的链路监

本文链接: https://www.lsjlt.com/news/191210.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • shell+Python实现简单的链路监
    背景:游戏公司,服务器上有充值服,世界服,经分服务器等,和前端的game有链接通信,为防止链接通信故障导致线上业务中断,需要一个小脚本时刻监控线上链接状况。涉及:shell、python2.6、126免费邮箱配置:vim /usr/ligh...
    99+
    2023-01-31
    链路 简单 shell
  • Python单链表简单实现代码
    本文实例讲述了Python单链表简单实现代码。分享给大家供大家参考,具体如下: 用Python模拟一下单链表,比较简单,初学者可以参考参考 #coding:utf-8 class Node(object...
    99+
    2022-06-04
    链表 代码 简单
  • python实现linux下的简单进程监
    最近看writeup看的有点头疼,深深感受到了自己的无知。确实还需要学习很多东西、一点一点的积累!加油! python确实很强大哦~,要想学好python就得自己多动手堆代码! 无聊写了一个进程监控的脚本,就当做是练习。其实最终...
    99+
    2023-01-31
    进程 简单 python
  • 【Python】实现一个简单的区块链系统
    本文章利用 Python 实现一个简单的功能较为完善的区块链系统(包括区块链结构、账户、钱包、转账),采用的共识机制是 POW。 一、区块与区块链结构 Block.py import hashlibfrom datetime import ...
    99+
    2023-09-22
    区块链 python 共识算法
  • python 简单的多线程链接实现代码
    服务端: #!/usr/bin/env import SocketServer class myMonitorHandler(SocketServer.BaseRequestHandler): def...
    99+
    2022-06-04
    多线程 代码 简单
  • 详解python实现简单区块链结构
    区块链 比特币从诞生到现在已经10年了,最近接触到了区块链相关的技术,为了揭开其背后的神秘面纱,我就从头开始构建一个简单的区块链。 从技术上来看:区块是一种记录交易的数据结构,反映了...
    99+
    2022-11-12
  • python单链表的实现
    ''' 当加入第一个node节点的时候,会有几个值,(这里的self.tail.next 其实就是node.next) head = item = tail = Node(object element1 memory) item = hea...
    99+
    2023-01-31
    链表 python
  • 如何使用rust实现简单的单链表
    目录前言1.链表节点的定义2.链表的定义3.实现从链表头部插入节点的prepend方法4.为链表实现Display trait定制链表的打印显示5.为链表实现翻转链表功能的rever...
    99+
    2022-11-13
  • springboot线程池监控的简单实现
    目录背景代码代码类结构线程池扩展类线程工具类线程bean类线程池实现类线程池监控接口类运行结果背景 在我们实际项目开发中,常常会为不同的优先级的任务设置相对应的线程池。一般我们只关注...
    99+
    2022-11-13
  • Python实现简单的猜单词
    本文实例为大家分享了Python实现简单猜单词的具体代码,供大家参考,具体内容如下 游戏说明: 由程序随机产生一个单词,打乱该单词字母的排列顺序,玩家猜测原来的单词。 游戏关键点: 如何产生一个单词? 如何打乱单词字...
    99+
    2022-06-02
    python 猜单词
  • Python实现简单的API
    代码实现 # coding:utf-8 import json from urlparse import parse_qs from wsgiref.simple_server import make_server # 定...
    99+
    2023-01-31
    简单 Python API
  • 如何实现一个简单的区块链
    这篇文章将为大家详细讲解有关如何实现一个简单的区块链,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。区块链的基础概念很简单:一个分布式数据库,...
    99+
    2022-10-18
  • python中的单向链表实现
    目录一、单向链表概念二、建立节点对象三、链表对象的初始定义四、判断链表是否为空五、获取链表长度六、向头部添加节点七、向尾部添加节点八、指定位置插入节点九、删除指定位置的节点十、查找是...
    99+
    2022-11-13
  • 实现的简单python例子
    尊重作者,本文转载自:http://blog.csdn.net/oMuYeJingFeng1/article/details/23822279 1、输入3个数字,从小到大输出:x = int(input('please input x:')...
    99+
    2023-01-31
    例子 简单 python
  • Java如何实现简单的区块链程序
    本篇内容主要讲解“Java如何实现简单的区块链程序”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java如何实现简单的区块链程序”吧!什么是区块链?那么,让我们先来了解一下区块链到底是什么…好吧...
    99+
    2023-06-14
  • 简单的一次springMVC路由跳转实现
    实现目标:使用springMVC前端控制器,跳转到WEB-INF的templates下面的前端页面 图示 1.目录结构 2.创建一个maven的webapp项目,创建好之后记得把...
    99+
    2022-11-13
  • python区块链地址的简版实现
    说明 本文根据https://github.com/liuchengxu/blockchain-tutorial 的内容,用python实现的,但根据个人的理解进行了一些修改,大量引...
    99+
    2022-11-11
  • go语言区块链实战实现简单的区块与区块链
    目录区块链实战Version 1区块相关:区块链相关区块链实战 字节 字段 说...
    99+
    2022-11-12
  • 如何用JS实现简单的数据监听
    目录概述第一步第二步为什么需要单独的_data?给data多添加一点数据格式化初始值格式化object对象,监听值概述 主要是用Object.defineProperty实现类似vu...
    99+
    2022-11-12
  • 浅谈Python单向链表的实现
    链表由一系列不必在内存中相连的结构构成,这些对象按线性顺序排序。每个结构含有表元素和指向后继元素的指针。最后一个单元的指针指向NULL。为了方便链表的删除与插入操作,可以为链表添加一个表头。 删除操作可以...
    99+
    2022-06-04
    浅谈 链表 Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作