网站域名监控python脚本

用Python编写的网站监测脚本,它可以检查网站能否正常打开、域名IP是否能Ping通,以及域名IP的指定端口是否正常开放。这个脚本使用了requests库来检查网站是否可访问,subprocess库来执行Ping命令,以及socket库来检查端口是否开放。

脚本代码

import requests
import subprocess
import socket

def check_website(url):
"""检查网站是否能正常打开"""
try:
response = requests.get(url, timeout=10)
if response.status_code == 200:
print(f"网站 {url} 可以正常访问,状态码: 200")
return True
else:
print(f"网站 {url} 返回异常状态码: {response.status_code}")
return False
except requests.exceptions.RequestException as e:
print(f"网站 {url} 无法访问,错误: {e}")
return False

def ping_ip(ip):
"""检查域名IP是否能Ping通"""
try:
# 使用ping命令(Windows和Linux/macOS兼容)
param = "-n" if subprocess.os.name == "nt" else "-c"
command = ["ping", param, "4", ip] # 发送4个ping包
output = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
if output.returncode == 0:
print(f"IP {ip} 可以Ping通")
return True
else:
print(f"IP {ip} 无法Ping通")
return False
except Exception as e:
print(f"Ping {ip} 时发生错误: {e}")
return False

def check_port(ip, port):
"""检查域名IP的指定端口是否开放"""
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(5) # 设置超时时间
result = sock.connect_ex((ip, port))
if result == 0:
print(f"IP {ip} 的端口 {port} 已开放")
return True
else:
print(f"IP {ip} 的端口 {port} 未开放")
return False
except Exception as e:
print(f"检查端口 {port} 时发生错误: {e}")
return False
finally:
sock.close()

def main():
# 输入网站URL
url = input("请输入要监测的网站URL(例如 https://www.example.com): ")
# 输入要检查的端口
port = int(input("请输入要检查的端口号(例如 80): "))

# 提取域名
domain = url.split("//")[-1].split("/")[0]

# 解析域名IP
try:
ip = socket.gethostbyname(domain)
print(f"域名 {domain} 的IP地址是: {ip}")
except socket.gaierror as e:
print(f"无法解析域名 {domain} 的IP地址,错误: {e}")
return

# 检查网站
check_website(url)
# 检查Ping
ping_ip(ip)
# 检查端口
check_port(ip, port)

if __name__ == "__main__":
main()

 

脚本功能说明

  1. 检查网站是否可访问

    • 使用requests库发送HTTP请求,检查返回状态码是否为200。

  2. 检查域名IP是否能Ping通

    • 使用subprocess库调用系统的Ping命令,检查IP是否可达。

  3. 检查域名IP的指定端口是否开放

    • 使用socket库尝试连接指定端口,判断端口是否开放。

      • 使用方法

        1. 安装依赖库:

           pip install requests
        2. 运行脚本:python website_monitor.py
        3. 输入要监测的网站URL和端口号,脚本会自动检查并输出结果。

          示例输出 

          请输入要监测的网站URL(例如 https://www.example.com): https://www.google.com
          请输入要检查的端口号(例如 80): 443
          域名 www.google.com 的IP地址是: 142.250.72.196
          网站 https://www.google.com 可以正常访问,状态码: 200
          IP 142.250.72.196 可以Ping通
          IP 142.250.72.196 的端口 443 已开放

          注意事项

          1. 需要管理员权限才能执行Ping命令(在某些系统上)。

          2. 如果目标网站有反爬虫机制,可能会返回非200状态码。

          3. 端口检查仅适用于TCP端口,不适用于UDP端口。