Files
2026-04-11 22:02:38 +08:00

80 lines
2.5 KiB
Python

#!/usr/bin/env python3
"""测试脚本 - 运行10秒扫描并发送邮件"""
import os
import sys
import time
import datetime
import subprocess
# 导入主脚本的配置和函数
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
import ping_monitor
def ping_host(ip, timeout=2):
"""检测主机是否在线"""
try:
cmd = ["ping", "-c", "1", "-W", str(timeout), ip]
result = subprocess.run(cmd, capture_output=True, text=True)
return result.returncode == 0
except Exception:
return False
def main():
print(f"[{datetime.datetime.now()}] 测试脚本启动")
print(f"监控IP: {ping_monitor.TARGET_IPS}")
print(f"天气位置: {ping_monitor.WEATHER_LOCATION}")
print("-" * 50)
# 确保状态目录存在
os.makedirs(ping_monitor.STATE_DIR, exist_ok=True)
# 获取天气和新闻
print("正在获取天气和新闻...")
weather_info = ping_monitor.get_weather()
news_info = ping_monitor.get_hot_news()
print(f"天气原始信息: {weather_info[:100]}...")
print(f"新闻原始信息: {news_info[:100]}...")
weather_summary = ping_monitor.get_weather_summary(weather_info)
news_summary = ping_monitor.get_news_summary(news_info)
print(f"天气摘要: {weather_summary}")
print(f"新闻摘要: {news_summary}")
print("-" * 50)
# 测试Ping所有IP
online_ips = []
offline_ips = []
for ip in ping_monitor.TARGET_IPS:
online = ping_host(ip)
if online:
online_ips.append(ip)
print(f"[{datetime.datetime.now()}] {ip} 在线")
else:
offline_ips.append(ip)
print(f"[{datetime.datetime.now()}] {ip} 离线")
print("-" * 50)
# 加载状态
state = ping_monitor.load_state()
arrived_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# 如果有在线的IP,发送到岗邮件
if online_ips:
print(f"发送在线邮件 for: {online_ips}")
subject, html = ping_monitor.build_email_html("arrived", arrived_time, weather_summary, news_summary)
ping_monitor.send_email(subject, html)
# 如果有离线的IP,发送未到邮件
if offline_ips:
print(f"发送离线邮件 for: {offline_ips}")
subject, html = ping_monitor.build_email_html("not_arrived", None, weather_summary, news_summary)
ping_monitor.send_email(subject, html)
print("-" * 50)
print(f"[{datetime.datetime.now()}] 测试完成")
if __name__ == "__main__":
main()