shell编程实战之监控端口(80端口、443端口等)-linux运维
所以我们要实时监控这些办事,要是发明有办事涌现异样,需要立刻告警。这里我们不打算通过进程名来推断办事的状态。我们打算通过端口的监听来推断办事的运转状态。
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端口等)的细致内容,更多请关注 百分百源码网 其它相干文章!