百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>服务器> shell编程实战之监控端口(80端口、443端口等)-linux运维
分享文章到:

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

发布时间:10/01 来源:未知 浏览: 关键词:
个别公司用的办事器上面都会跑各种办事,比方nginx、php、mysql、redis、MongoDB等等。个别系统的运转可能会需要多个办事的配合,比方我司的系统需要php、mysql、redis、apache、MongoDB办事。这些办事缺一不成。 个别公司用的办事器上面都会跑各种办事,比方nginx、php、mysql、redis、MongoDB等等。个别系统的运转可能会需要多个办事的配合,比方我司的系统需要php、mysql、redis、apache、MongoDB办事。这些办事缺一不成。

所以我们要实时监控这些办事,要是发明有办事涌现异样,需要立刻告警。这里我们不打算通过进程名来推断办事的状态。我们打算通过端口的监听来推断办事的运转状态。

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

# netstat -tlnp
Active 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 tcp
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

然后再通过awk下令猎取第四列的信息。

# netstat -tlnp | grep tcp | awk '{print $4}'
127.0.0.1:6379
0.0.0.0:80
0.0.0.0:22
127.0.0.1:88
0.0.0.0:443
127.0.0.1:27017
0.0.0.0:3306

最后再通过cut下令猎取到端标语。

# netstat -tlnp | grep tcp | awk '{print $4}' | cut -d: -f2
6379
80
22
88
443
27017
3306

通过上面的操纵,我们能猎取当前办事器端口的状况,然后我们将需要运转办事的端口寄存在数组中,然后遍历该数组和拿到的这些信息做对照。

ports="80 88 443 3306 6379 27017"

for port in $ports
do
    echo $port
done

遍历这些需要监听的端口后,我们来将端口与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 $ports
do
    flag=$(echo $netstat_info | grep  $port)
    if [ -z "$flag" ];then
        echo "$port is dead"
    fi
done

关于端口监控的足本编写还是很容易的。下面我们来测试下该足本可否能正常监控端口。所有办事都正常的状况下,施行该足本不会导出任何信息。要是关闭了nginx办事,则应当涌现信息。

第一,所有办事都正常的状况下,施行足本

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

此刻我们来自动关闭nginx办事,然后再来运转该足本,查看会涌现什么信息

# /etc/init.d/nginx stop
Stoping nginx...  done
# ./port.sh 
80 is dead
443 is dead

由此得知,该足本能正常监控办事器端口状况。日常工作中,时常将上述足本和按时任务以及告警程序一起运用。将此足本发到定人任务去,没分钟施行一次,当发明指定端口没有被监听,则触发告警程序。

以上就是shell编程实战之监控端口(80端口、443端口等)的细致内容,更多请关注 百分百源码网 其它相干文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有158人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板