Newsgroup: it.comp.os.linux.iniziare
Titolo: Re: Creare entry da txt a xls?

 alle 22.25 del 24/09/2009 ha scritto su 
it.scienza.matematica:
Ho la fondata certezza che 1/0*1/0 debba essere = +2 ( molt. come somma ).

 Ho la fondata certezza che 1/0*1/0 debba essere = +2 ( molt. come somma ).
Forse la cosa più semplice è un script Rebol con il comando "replace/
all" dopo aver unzippato il file openOffice.
Max

 una promozione a scalare che dura un tempo totale di un mese)?
hai un contratto a tempo tipo 50 ore o 100 ore di wind o simili con 
scatti ogni 15 minuti?
io ho uno script del genere (python) ma le informazioni le legge da 
/var/log/messages e sul mio sistema non ho pppd-log.txt
se mi mandi qualche riga del file eventualmente posso modificare il 
mio script e mandartelo o se vuoi cimentarti tu con il python posso 
mandarti il mio script
-- 
bye
main(){printf("%u\n",!(!1|1));}

 del server del provider (talvolta, ahimè, impostato artatamente). 
allora forse non hai neanche bisogno di un foglio di calcolo
basterebbe anche una tabella in formato html
ma anche un foglio di calcolo non dovrebbe essere troppo complicato 
visto che openoffice usa il formato xml o comunque è in grado di 
importare un file con campi separati da ; o altro
cosa ti interessa in particolare?
quali dovrebbero essere le intestazioni delle colonne della tabella?


 automatico con i giusti campi menzionati sopra.
nel mio caso nel log vengono riportate le scritte:
Connect: ppp0 <--> /dev/ttyUSB0
Connect time xx.xx minutes.
sono le stesse anche nel tuo caso?
penso che la prima possa cambiare se per esempio usi un cellulare 
invece che una chiavetta usb anche se la stringa 'Connect: ppp' 
dovrebbe essere univoca...


 connessione e "time" per la sua fine. Che ne dici?
ok ho riscritto tutto da capo visto che quello che uso io funziona in 
modo abbastanza diverso (ho cercato di tenere le righe corte, spero
che l'indentazione non venga cambiata altrimenti non funziona +)
lo script legge il file /var/log/messages,
ricava dati inizio connessione dalla riga con "remote IP address"
e dati fine connessione dalla riga con "Connect time"
mostra nella tabella data e ora inizio e fine e tempo passato in
ore, minuti e secondi
il file html è temporaneo e il programma cerca di aprirlo in
google-chrome, opera o firefox
ho cercato di rendere facilmente modificabili le intestazioni della 
tabella, cellpadding, spacing e border (vedi i commenti)
fammi sapere se vuoi qualche altra modifica
------------8<------------8<---- taglia ------------8<-------------
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
inetstat.py
    crea un file html con una tabella relativa alla durata
    delle connessioni internet
Sintassi:
    inetstat.py
"""
import sys, tempfile, os, subprocess
def main():
    # se viene avviato con un qualsiasi argomento mostra l'help
    if len(sys.argv) > 1:
       print __doc__
       return 0
    # legge il file di log e lo converte in una lista di linee
    loglines = file2lines('/var/log/messages')
    # estrae i dati relativi alla connessione
    connectData = parseLogLines(loglines)
    # salva i dati in un file temporaneo e lo mostra sullo schermo
    showConnectData(connectData)
    return 0
def file2lines(fname):
    """
    restituisce il contenuto del file fname come una lista di linee
    """
    try:
       f = open(fname, "r")
       try:
          data = f.read()
       finally:
          f.close()
    except IOError, (errno, strerror):
       print("Errore %s\nImpossibile leggere %s: \n%s" %
             (errno, fname, strerror))
       return None
    return data.splitlines()
def parseLogLines(lines):
    """
    estrae dal file di log i dati relativi all'avvio e al termine della
    connessione a internet
    """
    #### inizio dati modificabili ####
    # titolo file html
    title = 'Statistiche connessione'
    # header tabella
    th1 = 'Inizio connessione'
    th2 = 'Fine connessione'
    th3 = 'Durata connessione'
    # padding, spacing e bordo celle tabella
    padding, spacing, border = 0, 0, 1
    #### fine dati modificabili ####
    # inizio testo html
    fstr = '<html><head>\n<title>%s</title></head>\n' +\
           '<body>\n<table cellpadding="%d" cellspacing="%d" ' +\
           'border="%d"><thead>\n<tr><th>%s</th><th>%s</th>' +\
           '<th>%s</th>\n</thead><tbody>\n'
    htmlstart = fstr % (title, padding, spacing, border, th1, th2, th3)
    # fine testo html
    htmlend = '</tbody></table></body></html>'
    connectstat = [htmlstart]
    starttime = ''
    for l in lines:
       # isola righe relative a pppd
       if ' pppd[' in l:
          # controlla se inizio connessione
          if ']: remote IP address' in l:
             if not starttime:
                starttime = l[:15]
                startsec = string2secs(starttime)
             else:
                print 'File log corrotto?\n'+\
                      'Sembra mancare riga fine connessione!'
          # controlla se fine connessione
          elif ']: Connect time ' in l:
             # per la rotazione del log all'inizio si può trovare
             # un log di disconnessione senza precedente log
             # connessione
             if not starttime:
                # se ad inizio file ignore semplicemente il dato
                # altrimenti mostra messaggio errore
                if len(connectstat) > 1:
                   print 'File log corrotto?\n'+\
                         'Sembra mancare riga inizio connessione'
             else:
                endtime = l[:15]
                endsec = string2secs(endtime)
                if endsec < startsec:
                   endsec += 86400
                addConnectData(connectstat,
                               starttime, endtime,
                               endsec - startsec)
                starttime = ''
    connectstat.append(htmlend)
    return connectstat
def showConnectData(data):
    """
    crea un file temporaneo
    scrive i dati nel file temporaneo
    apre il file temporaneo nel browser
    cancella il file
    """
    fname = ''
    try:
       f = tempfile.NamedTemporaryFile(suffix='.html', delete=False)
       fname = 
f.name
       try:
          f.write(''.join(data))
       finally:
          f.close()
    except IOError, (errno, strerror):
       print("Errore %s\nImpossibile creare %s:\n%s" %
              (errno, fname, strerror))
       return
    browser = getBrowser()
    if browser:
       rc = subprocess.call([browser, fname])
       if rc:
          print 'Impossibile avviare il browser.'
    os.unlink(fname)
def string2secs(timestr):
    """
    trasforma il time stamp ad inizio riga del file di log in secondi
    trascorsi dall'ora 00:00:00
    """
    h, m, s = timestr.split(' ')[2].split(':')
    return int(h) * 3600 + int(m) * 60 + int(s)
def addConnectData(statlist, tstart, tend, telapsed):
    """
    aggiunge una riga alla tabella con i dati di inizio, fine
    e durata connessione
    """
    fstr = '<tr><td>%s</td><td>%s</td><td align="right">' +\
           '%02d:%02d:%02d</td></tr>\n'
    statlist.append(fstr % (
                    tstart, tend,
                    telapsed / 3600,
                    telapsed % 3600 / 60,
                    telapsed % 60))
def getBrowser():
    """
    restituisce il primo browser disponibile tra google-chrome, opera e
    firefox
    """
    browsers = [
               '/opt/google/chrome/google-chrome',
               '/usr/bin/opera',
               '/usr/bin/firefox',
               ]
    for b in browsers:
       if os.path.exists(b):
          return b
    print 'Nessun browser web noto è disponibile.\n'+\
          'Impossibile mostrare le statistiche di connessione'
    return None
if __name__ == '__main__':
    sys.exit(main())
------------8<--------- taglia --------8<---------------8<-----------


 Firefox per i siti incompatibili o con problemi.
lo script cerca nell'ordine google-chrome, opera e firefox, nel tuo 
caso lancerebbe opera (ma forse potrebbe avere problemi se puppy 
installa i programmi in percorsi differenti...)


 parere mi dai su Chrome per Linux?
l'ho trovato installato su superOS (in pratica ubuntu con i codec 
multimediali e qualche applicazione in più) ma non l'ho mai usato 
veramente per cui non sono in grado di dare un giudizio
