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: