[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

conteggio stampe su cups.



il sistema cups manca di una funzione per calcolare quante stampe ha fatto
ogni utente.
si puo` derifare dai log. ho quindi fatto velocemente un programino che
prende l'insieme dei log, e mi totalizza per utente e per stampante il
consumo, e mi genera un file csv.
qualche anima buona potrebbe prenderlo e crearne una versione pi? pulita e
raffinata ? (magari da integrarsi nella interfaccia web)


/* cupspcmon . contatore pagine stampate
   (C) AGPLv3 2008-08-02 Leonardo Boselli */

/* uso: zcat /var/log/page* | cupspcmon | sort */

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

main(int argc,char * argv[])
{
  if (argc>1)
    { printf("error: il programma %s v. 0.1 non ammette opzioni\n",argv[0]);
      return argc;
    }

char snpri[30],snusr[30],snjob[10],sndat[30],
     snppr[12],snnps[8],sncod[8],snhos[32];

char prusr[1024][32];
int prct [1024];
int nfc;
char prcmp[32];
int prbuo,prpag;
int i,mi=0;
do
 {
   nfc=scanf("%s %s %s [%[^]]] %s %s %s %s",
             snpri,snusr,snjob,sndat,snppr,snnps,sncod,snhos);
   if (nfc<0) break;
//     elimina righe "total"
   if(atoi(snppr)) prpag=atoi(snnps); else prpag=0;
   sprintf(prcmp,"%s,%s",snusr,snpri);
   
   if(prpag)
   {
//     printf("ora guardo mi=%i",mi);
     for(i=0;i<mi;i++)
     {
      if (strcmp(prusr[i],prcmp)==0)
      {
//    se ha trovato utente/stampante
      break;
      }
     } 
     if(mi==i)
     {
//    se non esisteva lo crea ex novo
     strcpy(prusr[i],prcmp);
     mi++; 
     }
     prct[i]+=prpag;
   }
 } while (nfc>-1);
 
// display risultati
 
 for(i=0;i<mi;i++)
 {
   printf("%s,%i\n",prusr[i],prct[i]);
 }
  
// end of program



Reply to: