Newsgroup: it.comp.os.linux.sys
Titolo: Terminal Server e loggare le sessioni degli utenti: aiuto!

Butto questo messaggio nella bottiglia in questo mare virtuale sperando che
qualcuno possa darmi dei consigli.
Sto realizzando un sistema per un internet point.
L'architettura è terminal server dove il server ha due ethernet: una
collegata al router adsl (eth0) e l'altro alla rete locale (eth1).
Sul server (amd64X2) è installato ubuntu 6.06 (versione x86 per questioni di
migliore stabilità). Sul server uso ltsp versione 5.0
Per loggare l'attività degli utenti utilizzo:
iptables -A OUTPUT -o eth0 -j LOG --log-prefix "FW-OUT:" --log-level 7
--log-uid
Fin qui funziona tutto alla grande.
Il problema nasce quando, per questioni amministrative, devo loggare la
durata della sessione di cisacun utente, oltre alla gestione stessa degli
utenti.
Per farla breve, ho scelto di utilizzare freeradius, con gli utenti su
mysql, e pam_radius_auth.so, configurando per bene i vari files su pam.d
Anche questo funziona.
Il fatto che gli utenti sono su mysql mi ha dato la possibilità di creare un
gestionale in php.
Come sapete radius tiene memorizza le informazioni sulle sessioni. Accedendo
da console o con ssh riesce ad inserire le informazioni sia sul login che
sul logout.
Il problema è nato quando ltsp, non so perchè, non mi inserisce le
informazioni sul logout.
In questo modo non posso calcolare la durata della sessione e di conseguenza
la spesa.
Dopo diversi sbattimenti di testa ho capito come funziona ltsp5 (di cui ho
trovato scarsissima documentazione).
Il client usa un servizio apposito, ldm, che instaura sul server una
connessione ssh e quindi fa partire la sessione del windows manager (nel mio
caso gnome-session).
Ho variato il link presente su /etc/alternatives e l'ho fatto puntare ad uno
shell script da me chiamato /usr/bin/mywm
che è così strutturato:
--------------------------
#!/bin/bash
export SESSID=`/usr/bin/python /usr/bin/log-login`
/usr/bin/gnome-session
/usr/bin/python /usr/bin/log-logout
-----------------------------------------
Il funzionamento è banale: il primo comando chiama uno script python che
logga l'inizio della sessione.
Poi viene avviato gnome-session
Quindi, quando viene chiuso (o ucciso) gnome-session viene eseguito un altro
script in python che memorizza il logout.
Tanto per farvi capire meglio, lo script che logga il login è questo:
#!/usr/bin/python
import MySQLdb
import datetime
import os
username=os.environ.get("USER")
remoteip=os.environ.get("SSH_CLIENT")
datazero="0000-00-00 00:00:00"
now=datetime.datetime.now()
sql="INSERT INTO sessioni VALUES(0,'%s','%s','%s','%s','T')" %
(username,remoteip,now,datazero)
conn=MySQLdb.connect(host="localhost",user="aaaaaaaa",passwd="xxxxxxxxx",db="cccccccc")
cursore=conn.cursor()
cursore.execute(sql)
sql="SELECT id FROM sessioni WHERE username='%s' and pagato='T'" %
(username)
cursore.execute(sql)
for record in cursore.fetchall():
   session_id=record[0]
sql="UPDATE sessioni SET pagato='N' where id=%s" % (session_id)
cursore.execute(sql)
print session_id
Mentre quello che logga il logout è quest'altro:
#!/usr/bin/python
import MySQLdb
import datetime
import os
session_id=os.environ.get("SESSID")
now=datetime.datetime.now()
sql="UPDATE sessioni set logout='%s' where id=%s" % (now,session_id)
conn=MySQLdb.connect(host="localhost",user="aaaaaa",passwd="xxxxxx",db="cccccc")
cursore=conn.cursor()
cursore.execute(sql)
Anche questo funziona bene.
Ma allora dove sono i problemi?
1) Non vorrei che mi sto rompendo la testa per fare qualcosa che già esiste,
è più collaudata e funziona meglio. Ovviamente non sto parlando di prodotti
commerciali, di cui già conosco l'esistenza.
Ci sono mica dei pacchetti che fanno un report su mysql delle attività degli
utenti? Ho visto che esiste pam_mysqld: qualcuno lo usa?
2) Negli ultimi giorni ho un problema che non riesco a spiegarmi: ogni 30/40
minuti mi vengono disconnessi gli utenti.
Non so dove guardare per capire il problema.
3) I client (dei p3 500 [olidata alicon 3]) hanno grossi problemi all'avvio.
Talvolta partono, talvolta no. Danno messaggi del tipo spurius ack. Non
vorrei che fossero problemi con la rete lan (ho letto che gli ups posti
vicino agli switch possono dare dei problemi con nfs).
4) sono tentato di tornare a ltsp4, che però -mi risulta- usa xdmc con tutte
le lentezze di rete e i problemi di sicurezza associati.
Vi ringrazio per l'attenzione, e attendo con ansia le vostre opinioni.
Se poi qualcuno è interessato a collaborare con me per mettere su un
progetto per creare una distro ad hoc (da diffondere o meno) per gli
internet point che rispetti le norme antiterrorismo e privacy non esiti a
farsi avanti.
Per contattarmi: 
ro...@xxxxxxx.org
 -> sostituisci le x con camelug
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

Allora, gli unici indizi che possono essere attinenti al crash sono questi
messaggi di errore:
Aug 23 16:10:08 server gconfd (alessandro-7635): Il server GConf non č
utilizzato, arresto
Aug 23 16:10:08 server gconfd (alessandro-7635): Uscita
Aug 23 16:10:08 server gconfd (alessandro-21098): inizializzazione (versione
2.18.0.1), pid 21098, utente "alessandro"
Aug 23 16:10:08 server gconfd (alessandro-21098): L'indirizzo "x
ml:readonly:/etc/gconf/gconf.xml.mandatory" č stato risolta ad una sorgente
di configurazione in sola lettura in posizione 0
Aug 23 16:10:08 server gconfd (alessandro-21098): L'indirizzo "x
ml:readwrite:/home/alessandro/.gconf" č stato risolto ad una sorgente
diconfigurazione scrivibile in posizione 1
Aug 23 16:10:08 server gconfd (alessandro-21098): L'indirizzo "x
ml:readonly:/etc/gconf/gconf.xml.defaults" č stato risolta ad una sorgente
di configurazione in sola lettura in posizione 2
Aug 23 16:10:08 server gconfd (alessandro-21098): L'indirizzo "x
ml:readonly:/var/lib/gconf/debian.defaults" č stato risolta ad una sorgente
di configurazione in sola lettura in posizione 3
Aug 23 16:10:08 server gconfd (alessandro-21098): L'indirizzo "x
ml:readonly:/var/lib/gconf/defaults" č stato risolta ad una sorgente di
configurazione in sola lettura in posizione 4
Aug 23 16:10:38 server-unicitta gconfd (alessandro-21098): Il server GConf
non č utilizzato, arresto
Aug 23 16:10:38 server-unicitta gconfd (alessandro-21098): Uscita
Dove mettere le mani?
