以下是一个使用Python编写的示例代码,可以监控两个端口,并在两个端口都关闭时发送警报。
import socket
import smtplib
# 定义需要监控的两个端口
port1 = 80
port2 = 443
# 定义发送警报的函数
def send_alert():
sender = 'your_email@example.com'
receiver = 'recipient@example.com'
subject = 'Alert: Both ports are closed'
message = 'Both port {} and port {} are closed.'.format(port1, port2)
# 创建邮件内容
email_content = 'Subject: {}\n\n{}'.format(subject, message)
# 使用SMTP发送邮件
with smtplib.SMTP('smtp.example.com', 587) as server:
server.starttls()
server.login('username', 'password')
server.sendmail(sender, receiver, email_content)
# 检查端口是否关闭的函数
def check_port(port):
try:
# 创建一个TCP/IP套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(1)
# 尝试连接端口
result = sock.connect_ex(('localhost', port))
# 如果端口关闭,返回True;否则返回False
if result == 0:
return False
else:
return True
except socket.error:
return True
finally:
# 关闭套接字连接
sock.close()
# 检查两个端口的状态
if check_port(port1) and check_port(port2):
send_alert()