linux user group brescia

immagine del castello

Archivio della mailing list

[LugBS] Rilevatore presenze via RFID, USB e python

Andrea Gelmini andrea.gelmini a lugbs.linux.it
Lun 2 Maggio 2011 11:44:39 UTC
Il 23 aprile 2011 23:26, Marco Manenti <marco.manenti a gmail.com> ha scritto:
> Ciao,
> ho scritto il mio programmino in python, abbiate pietà di me..
>
> http://aghartta.wordpress.com/2011/04/22/lettore-rfid-e-rilevamento-presenze/

Ciao e complimenti.

> Vi prego di inviarmi suggerimenti, intanto che rifletto sul frontend,
> soprattutto per:

Non ho modo a breve di dargli un occhio, però me lo segno e prima o poi una
letta gliela do volentieri.

> - la gestione della gestione come demone (PID e balle varie) e la necessità
> di mantenere il demone "autoavviante" nel caso di crash improvvisi del
> demone stesso

Questo è uno dei modi piu' precisini che ho per far diventare il tutto
un demone:

class Log_out:
    '''file-like dummy device, used for daemonization
    writes are redirected into our logging object'''
    def write(self, s):
        debugmsg(s)

def daemonize():
    "cause this process to becaome a daemon"
    if os.fork() != 0:
        os._exit(0)
    os.setsid()
    if os.fork() != 0:      # 2nd fork is widely recommended
        os._exit(0)         # though not always needed
    debugmsg("daemonized")
    os.chdir("/")   # not strictly necessary, but a good idea
    os.umask(0)
    sys.stdin.close()
    sys.stdout = Log_out()
    sys.stderr = Log_out()

La fonte non la ricordo. Un qualche thread vecchissimo di come portare in Python
le indicazioni di Stevens.

Per la gestione di eventuali restart, puoi banalmente ispirarti a
quanto trovi qui:
https://github.com/Gelma/Fucklog/blob/master/fucklog.py

Cerca pidfile. Nulla di trascendentale, fa solo comodo averlo gia' scritto.

Questo è facilmente utilizzabile in congiunzione con uno script in
cron per controllare che non sia
schiantato (in effetti ci sarebbe anche il codice di Bernstein a riguardo).

Ti metto quello che sto usando sul server del Lug per monitorare
mailman (anzi, se qualcuno ha
voglia di riscriverlo meglio, con meno invocazioni esterne, usando il
piu' possibile le parti builtin
della bash, ne saro' felice):

#!/bin/bash
#Controllo che mailman sia attivo

lock=$(cat /var/lock/mailman/master-qrunner)
ris=$(echo $lock|sed
's/\/var\/lib\/mailman\/locks\/master-qrunner.li61-168.members.linode.com.//g')

[ "/usr/bin/python/usr/lib/mailman/bin/mailmanctl-s-qstart" = $(cat
"/proc/$ris/cmdline") ] || (echo "Mailman risulta
morto";/etc/init.d/postfix start)

Ciao,
Gelma

n.b: l'interfacciamento ad Asterisk potrebbe risultare interessante
per mandare in automatico delle comunicazioni, nelle scuole, ai
genitori degli alunni non presenti...



Maggiori informazioni sulla lista Lug