本帖最后由 wkdxz 于 2023-5-27 09:17 编辑
给你一个思路,将最后一次断网的时间写入一个文本(比如:c:\net.txt)
下次运行时,如果网络不通,则将当前时间减去 c:\net.txt 里面的时间,若时间超过6分钟,则直接关机
大概就是这样:
[Python] 纯文本查看 复制代码 import os
import time
net_txt = 'D:/net.txt'
restart_cmd = 'shutdown /r /t 0'
shutdown_cmd = 'shutdown /s /t 0'
max_offline_time = 6 * 60 # 最大离线时间为6分钟
def check_network():
'''检测网络是否畅通'''
network_check = os.popen("ping -n 2 baidu.com").read()
if "TTL=" in network_check:
return True
else:
return False
def restart_pc():
'''重启'''
print("检测到网络断开,正在自动重启...")
os.system(restart_cmd)
def shutdown_pc():
'''关机'''
print("网络断开超过6分钟,正在自动关机...")
os.system(shutdown_cmd)
def get_last_offline_time():
'''获取上次离线时间'''
if os.path.exists(net_txt):
with open(net_txt, 'r') as f:
last_offline_time = float(f.read())
return last_offline_time
else:
return None
def write_last_offline_time():
'''写入本次离线时间'''
with open(net_txt, 'w') as f:
f.write(str(time.time()))
last_offline_time = get_last_offline_time()
while True:
# 网络不通
if not check_network():
# 判断是否超过6分钟
if last_offline_time is not None and (time.time() - last_offline_time) > max_offline_time:
shutdown_pc()
break
else:
restart_pc()
last_offline_time = time.time()
write_last_offline_time()
else:
# 网络畅通
if last_offline_time is not None:
os.remove(net_txt)
time.sleep(10)
|