Traffic.py

Da Blah Hacklab, GNU/Linux e software libero.

Questo programmino fatto in python non fa altro che monitorare il file /var/log/messages e calcolare il traffico effettuato nel giorno. State attenti e guardate comunque sempre il sito tre.it per essere sicuri. Un altro consiglio è scollegarsi sempre a mezzanotte altrimenti la tre potrebbe continuare a contare il traffico come il giorno precedente e quindi andare fuori dalla soglia!

Per installare il programmino create ad esempio il file /usr/local/bin/traffic e poi dategli i permessi di esecuzione cosi:

chmod +x /usr/local/bin/traffic
#! /usr/bin/python
# Programma per monitorare il traffico dial-up dai log di pppd.
# By ovenpasta. Dominio pubblico.

import gtk,gobject

import os,re

timeout_k=5000

class W (gtk.Window):
    def __init__(self):
        gtk.Window.__init__(self)
        self.set_title("Traffic ;)")
        self.show()
        self.l=gtk.Label()
        self.l.show()
        self.add(self.l)
        self.connect("destroy",lambda x: gtk.main_quit())
        self.update()
        
    def update(self):

        f=file ("/var/log/messages").readlines()

        recv_a=0
        sent_a=0

        try:
            p=os.popen("/usr/sbin/pppstats 2>&1").readlines()[1].strip()

            r=re.compile("(\d+)\s*(\d+\s*){4}\s*[|]\s*(\d+).*")
            m=r.match(p)

            sent_a=int(m.group(3))
            recv_a=int(m.group(1))
        except:
            pass

        w=os.popen("LANG=C date +%b\ %e").readline().strip()

        r=re.compile("(\w+ +\d+).+pppd.+Sent (\d+).+received (\d+).*")

        sent=0
        recv=0

        for x in f:
            m=r.match(x.strip())
            if m is not None and m.group(1)==w:
                sent+= int(m.group(2))
                recv+= int(m.group(3))

        k=1024
        sent/=k
        recv/=k
        sent_a/=k
        recv_a/=k
        
        s="Traffic for %s\n"%w
        s+= "Log sent: %d Log recv: %d\n"%(sent,recv)
        s+= "Act sent: %d Act recv: %d\n"%(sent_a,recv_a)
        sent_t=sent+sent_a
        recv_t=recv+recv_a
        s+= "Sent: %d Recv: %d\n"%(sent_t,recv_t)
        mega="%.3f MB\n"  % ((sent_t+recv_t)/1024.  )
        s+= "Total: "+mega

        self.l.set_text(s)
        self.set_title("T: " +mega)
        gobject.timeout_add(timeout_k, self.update)

z=W()
gtk.main()
Strumenti personali