Measure Network Data with Python

nchpmn picture nchpmn · Jan 22, 2012 · Viewed 21.8k times · Source

I'm currently writing a program to shut down a computer when over a period of time (say, half an hour) network traffic is below a certain threshold.

Here's the pseudocode that I've worked will give the correct logic:

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

What I'm looking for is the Python module or library that will allow me to measure this.

Whilst I've done various research into this, these don't seem to be the sort of functionality I'm after, regardless of their language.

Any ideas on how to implement this?

Answer

aayoubi picture aayoubi · Jan 22, 2012

To check the network traffic on your system, i recommend you look into 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)}
>>>

And to shutdown your OS, if you are on windows check this: OS Reboot, Shutdown, Hibernate, Sleep, Wakeup (Windows Python)

and if you are using linux/unix, use the subprocess module to send the shutdown/reboot command.