Измерение сетевых данных с помощью Python

В настоящее время я пишу программу для отключения компьютера, когда через определенный промежуток времени (скажем, полчаса) сетевой трафик находится ниже определенного порога.

Здесь псевдокод, который я работал, даст правильную логику:

BEGIN SUBPROGRAM
    loopFlag = True
    Wait 5 minutes    # Allows time for boot and for the machine to settle
    traffic = 0
    WHILE loopFlag = True DO
        FOR sec = 0 to 3600
            traffic += *network.traffic()*
            wait 1 second
        ENDFOR
        IF traffic < trafficThreshold THEN
            loopFlag = False
        ENDIF
    ENDWHILE
    os.ShutDown()
END SUBPROGRAM

То, что я ищу, это модуль или библиотека Python, которые позволят мне измерить это.

Хотя я проводил различные исследования в этом, они, похоже, не такие функциональные возможности, как я, независимо от их языка.

Любые идеи о том, как это реализовать?

Ответ 1

Чтобы проверить сетевой трафик в вашей системе, я рекомендую вам посмотреть в psutil:

>>> psutil.net_io_counters(pernic=True)
{'lo': iostat(bytes_sent=799953745, bytes_recv=799953745, packets_sent=453698, packets_recv=453698), 
 'eth0': iostat(bytes_sent=734324837, bytes_recv=4163935363, packets_sent=3605828, packets_recv=4096685)}
>>>

И для выключения вашей ОС, если вы находитесь на окнах, проверьте это: перезагрузка ОС, выключение, спящий режим, спящий режим, пробуждение (Windows Python)

и если вы используете linux/unix, используйте модуль subprocess для отправки команды shutdown/reboot.