YunMai365/脚本/测试响应时间.txt

73 lines
2.5 KiB
Plaintext
Raw Normal View History

2024-10-28 14:21:41 +08:00
import socket
import subprocess
import time
import os
import paramiko
# 配置参数
ip_file = "C:/Users/andin/Desktop/ip.txt" # 存放IP地址的文件
timeout_threshold = 6 # 超过这个时间(秒)就重启
ssh_host = "192.168.234.143" # Linux 服务器的 IP 地址
ssh_user = "root" # SSH 用户名
ssh_password = "qwer1234" # SSH 密码
def load_ips(filename):
print("加载 IP 地址...")
if not os.path.exists(filename):
print(f"文件 {filename} 不存在。")
return []
with open(filename, 'r') as f:
ips = [line.strip() for line in f if line.strip()]
print(f"加载的 IP 地址: {ips}")
return ips
def test_port(ip, port=80):
start_time = time.time()
print(f"尝试连接到 {ip}:{port}...")
try:
with socket.create_connection((ip, port), timeout=timeout_threshold) as sock:
request = f"GET / HTTP/1.1\r\nHost: {ip}\r\n\r\n".encode()
sock.sendall(request)
sock.recv(1024) # 读取响应
response_time = time.time() - start_time
print(f"成功连接到 {ip}:{port},响应时间为 {response_time:.2f} 秒")
return response_time
except socket.timeout:
print(f"连接到 {ip}:{port} 超时。")
return None
except Exception as e:
print(f"连接到 {ip}:{port} 出错 - {e}")
return None
def restart():
try:
print("通过 SSH 执行重启命令...")
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(ssh_host, username=ssh_user, password=ssh_password)
stdin, stdout, stderr = client.exec_command("sudo reboot")
print(stdout.read().decode())
print(stderr.read().decode())
client.close()
print("重启命令执行成功。")
except Exception as e:
print(f"执行重启命令时出错: {e}")
def main():
try:
ip_list = load_ips(ip_file)
for ip in ip_list:
print(f"正在测试 {ip} 上的端口 80...")
response_time = test_port(ip)
if response_time is None or response_time > timeout_threshold:
print(f"{ip} 的响应时间超过阈值或不可达。正在重启...")
restart()
else:
print(f"{ip} 的响应时间为: {response_time:.2f} 秒")
except Exception as e:
print(f"主函数执行出错: {e}")
if __name__ == "__main__":
print("脚本开始执行...")
main()