shell编程实战之监控端口(80端口、443端口等)

一般企业用的服务器上面都会跑各种服务,比如nginx、php、mysql、redis、mongodb等等。一般系统的运行可能会需要多个服务的配合,比如我司的系统需要php、mysql、redis、apache、mongodb服务。这些服务缺一不可。

所以我们要实时监控这些服务,如果发现有服务出现异常,需要立即告警。这里我们不打算通过进程名来判断服务的状态。我们打算通过端口的监听来判断服务的运行状态。

linux服务器上有一个命令可以用来查看端口状态:netstat。但是在centOS7上,需要先安装net-tools工具,才有这个命令。已经安装这个工具包后,我们来使用netstat命令,看看它会显示哪些信息

# netstat -tlnpActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      11213/redis-server  tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1556/nginx: master  tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      984/sshd            tcp        0      0 127.0.0.1:88            0.0.0.0:*               LISTEN      17446/httpd         tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      1556/nginx: master  tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      25859/mongod        tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      7138/mysqld

上面显示的信息,不管是端口6379的redis,还是3306的mysql等等,都是运行我司系统必须的服务。然后,我们通过grep命令,过滤掉第一行以及第二行

# netstat -tlnp | grep tcptcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      11213/redis-server  tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1556/nginx: master  tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      984/sshd            tcp        0      0 127.0.0.1:88            0.0.0.0:*               LISTEN      17446/httpd         tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      1556/nginx: master  tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      25859/mongod        tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      7138/mysqld

然后再通过awk命令获取第四列的信息。

# netstat -tlnp | grep tcp | awk '{print $4}'127.0.0.1:63790.0.0.0:800.0.0.0:22127.0.0.1:880.0.0.0:443127.0.0.1:270170.0.0.0:3306

最后再通过cut命令获取到端口号。

# netstat -tlnp | grep tcp | awk '{print $4}' | cut -d: -f26379802288443270173306

通过上面的操作,我们能获取目前服务器端口的情况,然后我们将需要运行服务的端口存放在数组中,然后遍历该数组和拿到的这些信息做对比。

ports="80 88 443 3306 6379 27017"for port in $portsdo    echo $portdone

遍历这些需要监听的端口后,我们来将端口与netstat获取到的信息作对比。我们这里用grep命令来做判断。下面我们给出完整的代码:

#!/bin/bash# 监控服务器端口情况export LANG=en ports="80 88 443 3306 6379 27017"netstat_info=$(netstat -tlnp | grep tcp | awk '{print $4}' | cut -d: -f2)for port in $portsdo    flag=$(echo $netstat_info | grep  $port)    if [ -z "$flag" ];then        echo "$port is dead"    fidone

对于端口监控的脚本编写还是很容易的。下面我们来测试下该脚本是否能正常监控端口。所有服务都正常的情况下,执行该脚本不会输出任何信息。如果关闭了nginx服务,则应该出现信息。

首先,所有服务都正常的情况下,执行脚本

# ./port.sh # #不会有任何信息出现

现在我们来主动关闭nginx服务,然后再来运行该脚本,查看会出现什么信息

# /etc/init.d/nginx stopStoping nginx...  done# ./port.sh 80 is dead443 is dead

由此得知,该脚本能正常监控服务器端口情况。日常工作中,经常将上述脚本和定时任务以及告警程序一起使用。将此脚本发到定人任务去,没分钟执行一次,当发现指定端口没有被监听,则触发告警程序。

以上就是shell编程实战之监控端口(80端口、443端口等)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/163864.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年10月31日 22:02:41
下一篇 2025年10月31日 22:04:16

相关推荐

  • html怎么在服务器端一直运行_设html服务器持续运行法【方法】

    要使HTML页面持续对外服务,需借助Web服务器托管。一、Apache:安装后配置htdocs目录,启动服务并设为开机自启;二、Nginx:安装并修改nginx.conf指向HTML目录,启用服务及开机启动;三、Node.js:用http模块创建服务器,结合PM2实现后台常驻;四、云部署:在云服务器…

    2025年12月23日
    000
  • 怎么把html放在服务器运行_放html到服务器运行步骤【指南】

    准备HTML文件,确保包含index.html并检查资源路径;2. 选择服务器如云主机或GitHub Pages,通过SSH连接;3. 安装Nginx并启动服务;4. 用scp或FTP将文件上传至/var/www/html;5. 设置权限为755并归属www-data用户;6. 浏览器访问IP地址查…

    2025年12月23日
    000
  • 服务器怎么运行html文件路径_服务器运行html文件路径方法【教程】

    首先确认HTML文件存放路径是否正确并设置合理权限,再检查Web服务器配置指向目标目录,通过虚拟主机支持多站点部署,开发阶段可用本地测试服务器运行,最后确保防火墙及云服务器安全组开放相应端口以保障访问正常。 如果您在服务器上部署HTML文件后无法正确访问,可能是由于文件路径配置不当或服务器未正确指向…

    2025年12月23日
    000
  • cookie保存之谜揭晓:详解浏览器与服务器之间的交互

    随着互联网的发展,我们越来越多地使用浏览器进行网页浏览、购物、登录等操作。而在这些过程中,我们时常听到一个词语——cookie。那么cookie到底是什么?它的作用又是什么?今天我们就来揭秘cookie的保存之谜,详细解析浏览器与服务器之间的交互,并给出具体的代码示例。 一、cookie是什么? 简…

    2025年12月21日
    000
  • 分析和修复服务器内部错误:HTTP状态码500

    HTTP状态码500:分析服务器内部错误及其修复方案 摘要:HTTP状态码500表示服务器内部错误,是客户端向服务器发送请求时,服务器遇到了无法处理的错误而无法完成请求。本文将分析导致服务器内部错误的可能原因,并提出相应的修复方案。 一、引言HTTP(Hypertext Transfer Proto…

    2025年12月21日
    000
  • 怎样用h5的sse服务器发送EventSource事件

    这次给大家带来怎样用h5的sse服务器发送eventsource事件,用h5的sse服务器发送eventsource事件的注意事项有哪些,下面就是实战案例,一起来看一下。 前言 我前面文章讲过数据大屏,里面的数据时时更新。还有时时更新的股票数据,Facebook/Twitter 更新、估价更新、新的…

    好文分享 2025年12月21日
    100
  • html5中sse服务器发送事件EventSource相关介绍

    本篇文章主要介绍了浅谈html5之sse服务器发送事件eventsource介绍,具有一定的参考价值,有兴趣的可以了解一下 前言 我前面文章讲过数据大屏,里面的数据时时更新。还有时时更新的股票数据,Facebook/Twitter 更新、估价更新、新的博文、赛事结果等等,都需要数据时时更新。之前我们…

    2025年12月21日
    000
  • 关于WebSocket部署服务器外网无法连接的解决方案

     首先要说的是我遇见的问题: WebSocket connection to ‘ws://www.xxxx.com/xxx/xx’ failed: Error during WebSocket handshake: Unexpected response code: 200网站绑定到了服务器,直接在…

    2025年12月17日
    000
  • 在服务器端的XSLT过程中出现的编码问题解决方案

    最近和苹果皮在讨论优化 weather for google earth 的时候使用到了 xslt 来转换 xml 数据的问题,那这里就必须用到转换引擎,大概过程就是把 xml 文件和 xslt 文件都转载到内存里用dom引擎进行转换到我们想要的 html(我这个实例里是要生成 kml 文件)。这个…

    好文分享 2025年12月17日
    000
  • 远程服务器 Python 环境搭建最佳实践

    使用虚拟环境、明确依赖管理、自动化配置和安全策略可构建可维护的远程Python环境。1. 用venv或conda隔离项目依赖;2. 通过requirements.txt区分开发生产依赖,结合pip-tools锁定版本;3. 使用pyenv管理多Python版本并配合virtualenv;4. 编写s…

    2025年12月14日
    000
  • Python脚本操作在Linux服务器维护中的应用

    Python脚本在Linux服务器维护中的应用-具体代码示例 摘要:随着互联网技术的发展,Linux操作系统在服务器维护中扮演了非常重要的角色。本文介绍了如何使用Python脚本在Linux服务器维护中自动化进行常见的任务,以提高效率。同时,我们提供了一些具体的代码示例,来解释如何使用Python编…

    2025年12月13日
    000
  • 怎么将php源码传到服务器_传php源码到服务器教程【指南】

    使用FTP、SCP、Git或SFTP可上传PHP源码。1、FTP工具如FileZilla输入主机信息连接后拖拽文件至服务器/public_html目录。2、SCP命令“scp -r 本地路径 用户名@IP:远程路径”通过SSH安全传输。3、Git初始化本地仓库并推送到远程,服务器克隆后通过git p…

    2025年12月13日
    000
  • 怎么在同一台服务器上安装多个MySQL

    一、安装前的准备工作 在进行MySQL多实例的安装前,需要进行以下准备工作: 准备多个MySQL的安装包,可以从MySQL官网下载适合自己环境的版本进行下载:https://dev.mysql.com/downloads/ 准备多个MySQL数据目录,可以通过创建不同的目录来支持不同的MySQL实例…

    数据库 2025年12月4日
    100
  • linux怎么查看是否是虚拟机

    查看方法:1、执行“dmidecode -s system-product-name”命令,如果输出“VMware Virtual Platform”则为虚拟机;2、执行“lscpu”命令,如果输出信息中有“VMware”则为虚拟机。 本教程操作环境:linux5.9.8系统、Dell G3电脑。 …

    2025年12月3日
    000
  • 晶核渠道服和官服互通吗 游戏服务器互通性介绍

    晶核渠道服与官服之间的互通性备受玩家关注。本文将深入探讨两者的服务器互通性,分析其特点和限制,并帮助玩家了解在不同服务器间游玩时的注意事项。无论是想要在渠道服体验更激烈的竞争,还是在官服享受更完善的福利,本文都能提供宝贵的指引,帮助玩家做出明智的选择。 话袋AI笔记 话袋AI笔记, 像聊天一样随时随…

    2025年12月2日 行业动态
    000
  • 检测SqlServer服务器CPU是否瓶颈

    检测SqlServer服务器CPU是否瓶颈 初次写博文,分享个人心得,欢迎大虾小虾来拍砖。 系统自带的性能监视器 在开始命令框中输入perfmon按enter键即可打开性能监视器 可以通过监视 % Processor Time 的值察看cpu是否遇到瓶颈,此值最好不要超出80% 如果达到了比 检测S…

    2025年12月2日
    000
  • 教你如何启动和停止Mysql服务之一

    在讨论如何启动mysql服务器之前,让我们考虑一下应该以什么用户身份运行mysql服务器。服务器可以手动或自动启动。如果你手动启动它,服务器以你登录unix(linux)的用户身份启动,即如果你用paul登录unix并启动服务器,它用paul运行;如果你用su命令切换到root,然后运启动服务器,则…

    数据库 2025年12月2日
    000
  • 教你如何启动和停止Mysql服务之二

    三、停止服务器      要手工启动服务器,使用mysqladmin:      %mysqladmin shutdown      要自动停止服务器,你不需做特别的事情。bsd系统一般通过向进程发一个term信号停止服务,它们或者正确应答它或被粗鲁地杀死。mysqld在它收到这个信号时以终止作为应…

    2025年12月2日
    000
  • mongodb在dos下服务器启动实例介绍

    这篇文章主要介绍了window下mongodb在dos下服务器启动及连接的相关资料,需要的朋友可以参考下 1.  配置环境变量    将MongoDB的安装目录(如:D:Program FilesmongodbServer3.4bin) 添加到 path 2. 启动 mongodb服务 (在dos中…

    2025年12月2日
    000
  • Linux服务器管理技巧:提高效率和安全性

    Linux服务器管理是确保服务器安全、稳定和高效运行的重要任务。接下来将介绍一些提高Linux服务器管理效率和安全性的技巧,以帮助管理员更好地管理Linux服务器 一、自动化管理 需要重写的内容是:1、脚本编写:使用Shell脚本编写自动化任务,如备份、清理日志、定时任务等。脚本可以减少人工操作,提…

    2025年12月2日
    000

发表回复

登录后才能评论
关注微信