用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" ing {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()
脚本功能阐明
- 查抄网站是否可访问:
- 利用requests库发送HTTP哀求,查抄返回状态码是否为200。
- 查抄域名IP是否能Ping通:
- 利用subprocess库调用系统的Ping下令,查抄IP是否可达。
- 查抄域名IP的指定端口是否开放:
- 利用socket库尝试毗连指定端口,判断端口是否开放。
- 利用方法
- 安装依赖库:
pip install requests
- 运行脚本:python website_monitor.py
- 输入要监测的网站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 已开放
留意事项
- 需要管理员权限才能执行Ping下令(在某些系统上)。
- 如果目的网站有反爬虫机制,可能会返回非200状态码。
- 端口查抄仅适用于TCP端口,不适用于UDP端口。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |