Bu kod sayesinde Ethernet Ağ Bağlantısında dosya upload hızı 3mbps altına düşerse,
Sistem 10 kere 5 saniye arayla kontrol ediyor. Her seferinde durum aynı olursa,
10. çalıştırma sonrası kod bilgisayarı kapatıyor.
# Bu ktüphaneyi yükleyin önce
#pip install --upgrade psutil
import psutil
import time
import os
from datetime import datetime
# ================== AYARLAR ==================
# Görev yöneticisinde görünen ağ adaptörü adı
# Örnek: "Ethernet", "Wi-Fi"
ADAPTER_NAME = "Ethernet"
# Altına düşerse takip başlayacak upload hızı
LIMIT_MBPS = 3.0
# Kaç saniyede bir kontrol edilecek
CHECK_INTERVAL = 5
# Kaç kez üst üste düşük kalırsa kapatılacak
MAX_LOW_CHECKS = 10
# Test için True yaparsan bilgisayarı kapatmaz, sadece yazar
DRY_RUN = False
# =============================================
def get_upload_bytes(adapter_name):
counters = psutil.net_io_counters(pernic=True)
if adapter_name not in counters:
print("Ağ adaptörü bulunamadı!")
print("Mevcut adaptörler:")
for name in counters.keys():
print("-", name)
raise SystemExit
return counters[adapter_name].bytes_sent
def calculate_upload_mbps(adapter_name, interval=1):
first = get_upload_bytes(adapter_name)
time.sleep(interval)
second = get_upload_bytes(adapter_name)
bytes_diff = second - first
# byte -> bit -> megabit
mbps = (bytes_diff * 8) / interval / 1_000_000
return mbps
def shutdown_pc():
print("Bilgisayar kapatılıyor...")
if DRY_RUN:
print("DRY_RUN açık olduğu için kapatma komutu çalıştırılmadı.")
else:
os.system("shutdown /s /t 0")
def main():
print("Upload hız takip botu başladı.")
print(f"Adaptör: {ADAPTER_NAME}")
print(f"Limit: {LIMIT_MBPS} Mbps")
print("-" * 40)
low_count = 0
while True:
upload_speed = calculate_upload_mbps(ADAPTER_NAME, interval=1)
now = datetime.now().strftime("%H:%M:%S")
print(f"[{now}] Upload hızı: {upload_speed:.2f} Mbps")
if upload_speed < LIMIT_MBPS:
low_count += 1
print(f"Düşük hız tespit edildi: {low_count}/{MAX_LOW_CHECKS}")
if low_count >= MAX_LOW_CHECKS:
print(
f"Upload hızı {MAX_LOW_CHECKS} kontrol boyunca "
f"{LIMIT_MBPS} Mbps altında kaldı."
)
shutdown_pc()
break
time.sleep(CHECK_INTERVAL)
else:
if low_count > 0:
print("Upload hızı tekrar normale döndü. Sayaç sıfırlandı.")
low_count = 0
time.sleep(CHECK_INTERVAL)
if __name__ == "__main__":
main()