技术原理:

本次服务监控采用较为简洁且通用的方法,主要是利用了nmap的扫描技术。针对TCP服务,采用半开扫描技术来探测指定的TCP端口是否可达;针对UDP服务,仅采用普通UDP端口扫描技术来探测指定的UDP端口是否可达。以此来判断相应的服务是否正常。

相关工具:

# yum -y install nmap

监控脚本:

#!/bin/sh

#============================================================================================

# 通用TCP、UDP服务监控,且服务异常时自动拉起服务

#

# 前提条件:

#     服务启动采用标准的系统启动脚本【service 服务名 (start|stop|restart|reload|...)】

#

#============================================================================================

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin

[[ $# -ne 3 ]] && echo "$0 端口号 协议类型 服务名" && exit 1

SRV_PORT=$1  ##端口号

SRV_PROT=$2  ##协议类型

SRV_NAME=$3  ##服务名

## 是否已正确扫描

SCAN_FLAG=0

ETH1_ADDR=`/sbin/ifconfig eth1 | awk -F ':' '/inet addr/{print $2}' | sed 's/[a-zA-Z ]//g'`

TMP_SRV_PROT=`echo ${SRV_PROT} | tr '[A-Z]' '[a-z]'`

if [[ "${TMP_SRV_PROT}" == "tcp" ]]; then

PROT_OPT="S"

elif [[ "${TMP_SRV_PROT}" == "udp" ]]; then

PROT_OPT="U"

else

echo "未知的协议类型!" && exit 1

fi

## 最多扫描3次,成功一次即可,以避免网络抖动而导致误判

for ((i=0; i<3; i++)); do

RETVAL=`/usr/bin/nmap -n -s${PROT_OPT} -p ${SRV_PORT} ${ETH1_ADDR} | grep open`

[[ -n "${RETVAL}" ]] && SCAN_FLAG=1;break || sleep 10

done

if [[ ${SCAN_FLAG} -ne 1 ]]; then

TMP_SRV_NAME=`echo ${SRV_NAME} | tr '[A-Z]' '[a-z]'`

[[ ! -f /etc/init.d/${TMP_SRV_NAME} ]] && TMP_SRV_NAME="${TMP_SRV_NAME}d"

/sbin/service ${TMP_SRV_NAME} restart >/dev/null 2>&1

fi

#============================================================================================

##The End

使用样例(crontab信息):

*/2 * * * * /usr/local/haproxy/sbin/check_service.sh 80 tcp HAProxy >/dev/null 2>&1

mysql 监听 udp_通用TCP、UDP服务监控脚本相关推荐

  1. mysql 监听tcp6_切换MySQL以监听TCP

    mysql 监听tcp6 By default, MySQL only allows connections from the localhost address. The configuration ...

  2. oracle 启动 linux监听,Linux下启动Oracle服务和监听程序

    $ su – oracle $ sqlplus / nolog sql> conn / as sysdba sql> startup                 #启动Oracle,需 ...

  3. mysql监听串口_tcp与串口透传(select)

    介绍 tcp作为服务端,监听端口8888,实现串口透传,这里是使用select监听tcp的receive和串口的read,单工通信 -p 指定tcp端口 -s 指定串口 -b 指定波特率 支持4800 ...

  4. 如何修改MySQL监听IP地址

    Mysql默认在本地环路地址127.0.0.1的3306端口监听,要使用其它IP地址需要修改配置文件. 1.编辑 vi /etc/mysql/mysql.conf.d/mysqld.cnf (ubun ...

  5. windows mysql 监听地址_MYSQL地址监听问题

    你的位置: 问答吧 -> 服务器 -> 问题详情 MYSQL地址监听问题 RedHat 9 系统 在论坛里找了很久发现通过改/etc/init.d/mysqld这个文件里的 $bindir ...

  6. 全网最详细、最简单 canal同步mysql 监听单实例、监听多实例 配置

    修改涉及的文件 deployer /conf/canal.properties /conf/example/instance.properties canal-adapter /conf/applic ...

  7. mysql监听地址的设定 —— 解决外部网址无法连接mysql的办法服务器

    今天在进行X项目转移时发现新服务器无法连接旧服务器的mysql. 经过确认,mysql的账号密码以及连接主机设置是没有问题的. 于是在旧服务器上查看了端口绑定状态,如图 3306端口只监听了本地loc ...

  8. python 监听tcp端口_创建TCP监听_创建TCP监听_功能示例_Python SDK示例_SDK 参考_开发指南_负载均衡 - 阿里云...

    # encoding=utf-8 import json import sys # 调用AcsClient参数进行身份验证 from aliyunsdkcore.client import AcsCl ...

  9. T-Pot平台Honeytrap蜜罐TCP/UDP服务攻击探测及实现自动化邮件告警

    T-pot平台的Honeytrap可观察针对TCP或UDP服务的攻击,作为一个守护程序模拟一些知名的服务,并能够分析攻击字符串,执行相应的下载文件指令,当不产生TCP或者UDP协议的时候Honeytr ...

  10. python脚本如何监听终止进程行为,如何通过脚本名获取pid

    文章目录 一.前言 二.最初的想法:直接获取脚本中的变量值 1.获取运行中py脚本的变量值 2.换一种方式 3.为什么不能获取脚本中的变量 4.下下策,使用使用python的gdb调试工具 三.pyt ...

最新文章

  1. springboot整合Quartz实现动态配置定时任务
  2. 数据结构——算法之(010)( 字符串的左旋转操作)
  3. Windows10看视频出现蓝屏重启
  4. Linux服务器运行sh文件提示权限不够解决方法?飞腾服务器Permission denied问题授权方法
  5. gulp与grunt对比
  6. 如何关闭父窗体?C#
  7. SpringSecurity常用登录认证方案
  8. 拥抱时序数据库,构筑IoT时代下智慧康养数据存储底座
  9. linux centos7.9图形界面版本下载_适合在任何地方使用的 Linux:15 个小型 Linux 发行版...
  10. jpushinterface.setalias的几个参数都是啥意思_很多电工老师傅都不知道,低压断路器基本参数,你懂几个?...
  11. Semantic Parsing on Freebase from Question-Answer Pairs【论文笔记】
  12. npm设置为淘宝镜像地址
  13. 支付宝存漏洞?这10招保护个人信息赶紧保存起来!
  14. NBMA网络中的OSPF实验(MGRE)
  15. 跟海外大牌正面PK,中国品牌如何出圈?
  16. 支付宝商家二维码收款、订单状态查询、退款API试用笔记
  17. 2017阿里实习生在线编程题
  18. 如何把新加的分区挂载到/根目录
  19. 企业营销获客为什么要选SEO?低预算适合做SEO吗?【必看】
  20. MySQL 8.0 OCP (1Z0-908)有中文考试了

热门文章

  1. numpy array
  2. ApiPost自动化测试基础之:接口参数依赖的情景处理...
  3. 阿里云发布ET奥运大脑,推进奥运进入数字时代
  4. Java多线程(六)线程池
  5. 【Error】:10061由于目标计算机积极拒绝,无法连接
  6. poj 1141 Brackets Sequence(线性dp)
  7. SOA的关键是什么?
  8. JavaScript 大整数相加后精度 如何解决
  9. jQuery整理您的笔记----jQuery开始
  10. CentOS6.4部署OpenStack Havana(Nova-Network版) (上)