网站管理系统 php,政协网站 两学一做专题研讨,建设建行积分兑换商城网站,今晚现场直播前言
在公司内网有一台服务器#xff0c;有动态的公网IP#xff0c;使用DDNS对外提供服务#xff0c;但是会因为停电、服务器卡死等原因导致服务器离线。服务器离线后无法及时获知#xff0c;因此需要实现在服务器离线的时候能够发送消息到手机上。
思路梳理
公司办理的…前言
在公司内网有一台服务器有动态的公网IP使用DDNS对外提供服务但是会因为停电、服务器卡死等原因导致服务器离线。服务器离线后无法及时获知因此需要实现在服务器离线的时候能够发送消息到手机上。
思路梳理
公司办理的是联通的商务宽带有赠送一台沃云的ECS但是一直处于闲置状态于是就想利用这个ECS去监听服务器的端口一旦端口无法访问就发送消息到手机上端口恢复访问也可以发送消息到手机上。
具体实施
内网服务器配置
开放监听的端口
在内网服务器上开放一个端口用于给公网上的ECS监听。
[rootrsecc ~]# yum -y install nc
[rootrsecc ~]# nc -lk 32768 chkconfig管理
因为nc命令会在服务器重启后退出因此可以使用chkconfig将nc服务设置为开机自启。
[rootrsecc ~]# vim /etc/init.d/ncserver写入如下内容
#!/bin/bash
# chkconfig: 3 88 88
/usr/bin/nc -lk 32768 配置权限并添加到开机自启。
[rootrsecc ~]# chmod x /etc/init.d/ncserver
[rootrsecc ~]# chkconfig --add ncserver
[rootrsecc ~]# chkconfig --list ncserver
ncserver 0:off 1:off 2:off 3:on 4:off 5:off 6:off这样的话当服务器重启后nc命令也会随着服务器启动。
防火墙配置
还需要在防火墙上放行对应的端口。
[rootrsecc ~]# firewall-cmd --add-port32768/tcp
[rootrsecc ~]# firewall-cmd --reload公网ECS配置
编写python脚本
编写python脚本来实现功能并将python脚本设置为开机自启。
导入需要使用的模块这里使用了 socket、time、json、requests 四个模块。
import socket
import time
import requests
import json编写发送消息的函数模块我这里使用的是企业微信的webhook机器人也可以使用钉钉、邮箱、短信等方式发送消息。
webhook webhook地址链接#webhook发送消息
def send_text(webhook, content):header {Content-Type: application/json,Charset: UTF-8}data {msgtype: text,text: {content: content}}data json.dumps(data)info requests.post(urlwebhook, datadata, headersheader)编写判断服务器状态的函数模块。这里使用的Python中的Socket标准库通过构建一个TCP连接的Socket对象使用connect_ex()方法连接服务器如果连接无异常返回的状态码为0。通过判读返回的状态码是否为0来判断服务器是否在线。
def check_server_connection(server, port):sock socket.socket(socket.AF_INET, socket.SOCK_STREAM)result sock.connect_ex((server, port))if result 0:service_status onreturn service_statuselse:service_status offreturn service_status编写一个while死循环通过判断状态码是否发生改变来实现发送消息的效果。
service_status off
prev_service_status offwhile True:service_status check_server_connection(服务器地址, 32768)if prev_service_status ! service_status:if service_status off:content 服务器已离线send_text(webhook, content)else:content 服务器已上线send_text(webhook, content)prev_service_status service_statustime.sleep(60)设置为开机自启。
实现方式和内网服务器一样使用ckhconfig命令。
[rootrsecc ~]# vim /etc/init.d/ncserver写入如下内容
#!/bin/bash
# chkconfig: 3 88 88
/usr/bin/python3 /opt/serveron.py 配置权限并添加到开机自启。
[rootrsecc ~]# chmod x /etc/init.d/ncserver
[rootrsecc ~]# chkconfig --add ncserver
[rootrsecc ~]# chkconfig --list ncserver
ncserver 0:off 1:off 2:off 3:on 4:off 5:off 6:off这样的话当服务器重启后python脚本也会随着服务器启动。
效果 总结
至此通过一个简易的脚本即可实现服务器的状态监控。 © 版权声明 文章使用Python监控服务器在线状态 作者Guangran 链接https://www.rsecc.cn/955.html 声明如无特别说明本文即为原创文章仅代表个人观点版权归《广然笔记》所有未经授权、请勿转载。