Scollegare in automatico una connessione PPP inattiva
Da Blah Hacklab, GNU/Linux e software libero - Megliadino San Fidenzio (Padova).
Questo programma scollega la connessione PPP in automatico dopo un certo periodo di inattività. Non solo, di solito una connessione internet ha del traffico occasionale di certi programmi che accedono alla rete anche se non li si usa. Questo script quindi monitora il traffico di rete e controlla se rimane sopra una certa soglia di traffico. Se non si verifica la condizione scollega la linea
Per installare lo script create il file di testo /usr/local/bin/inactive.py e assegnarli i permessi di esecuzione con chmod +x /usr/local/bin/inactive.py
Può essere utile aggiungere la chiamata al programma sul file /etc/ppp/ip-up, in modo che pppd lo esegua ogni volta che ci si collega. Basta aggiungere quanto segue alla fine del file:
/usr/local/bin/inactive.py &
Per info contattare aldox86 (chiocciola) gmail (punto) com
#! /usr/bin/env python
#by ovenpasta - public domain
import os,re
from datetime import datetime
from time import sleep
sent_p=0
recv_p=0
time_p=datetime.now()
elapsed=0
timeout= 30*60 #secondi
max=50*1024 #soglia (bytes)
res=10
history=[0 for i in range(0,res)]
def gettraf():
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=int(m.group(3))
recv=int(m.group(1))
return sent+recv
i=0
traf_ini=gettraf()
round=False
traf=0
while 1:
traf_p=gettraf()
j=i
i+=1
if i>=res:
i=0
round=True
history[i]=traf_p-traf-traf_ini
traf=0
for b in history:
traf+=b
print "Traffic timeout: traffic within %d seconds: %d bytes"%(timeout,traf)
if traf<max and round:
print "Traffic timeout: Less than %d bytes in %d seconds"%(max,timeout)
print "killing pppd..."
os.system("pkill pppd")
exit()
sleep (timeout/res)

