Hola!! A ver, el fichero que he enviado funciona perfectamente, pero necesitas utilizar el GNUawk (paquete gawk en vez del mawk, que viene por defecto en Debian).
Lo segundo es que hay que decirle al programa el fichero que hay que leer: coste_telefonico /var/log/ppp.log Y lo tercero, que si bien el ppp.log es muy buen fichero para llevar el control de las llamadas tiene 2 problemas: no guarda el año de la conexión (putada) y el sistema debian lo cambia cada semana, con lo que es muy incómodo para llevar la contabilidad de los 2 últimos meses. Yo lo que hago es crearme un fichero de resumen con las llamadas que luego proceso con una versión modificada de este script. (Si a alguien le interesa lo pongo aquí). Ya para terminar, no es que lo haya hecho yo, pero mi script es bastante más util que el pppcost (que tengo instalado en mi sistema tambien) porque te especifica las diferentes llamadas y el coste para cada una. Pero bueno, no es un programa perfecto, para mí vale para salir del paso. Si alguien está interesado aquí va una versión "light" (sin comentarios, para ahorrar sitio). -- Saudos: ><ose [EMAIL PROTECTED] (Vigo/Galicia/España) http://pagina.de/xmanoel/ http://w3.to/mikkeli/ 01/04 Jazz great Charlie Mingus dies at 57 in Cuernavaca, Mexico, 1979
BEGIN { ano=1997 id="infova" tipo ="local" iva = 0.16 coste = 5.7 pasos_iniciales["local"]=1 pasos_iniciales["provincial"]=2 pasos_iniciales["nacional"]=3 tarifa["local,reducida"]=240 tarifa["local,normal"]=180 tarifa["local,punta"]=180 tarifa["provincial,reducida"]=46 tarifa["provincial,normal"]=22.9 tarifa["provincial,punta"]=20 tarifa["nacional,reducida"]=20 tarifa["nacional,normal"]=10.7 tarifa["nacional,punta"]=7.2 } /Serial connection established\./ { mes=int(index("NulJanFebMarAprMayJunJulAugSepOctNovDec",$1)/3) dia=$2 split($3,x,":") hora=x[1] minuto=x[2] } /Connection terminated\./ { dia_semana_v=dia_semana(dia, mes, ano) split($3,x,":") duracion_v = duracion(hora, minuto, x[1], x[2]) duracion_minutos=duracion_v / 60 pasos_v=pasos(dia_semana_v,hora,duracion_v,tipo) printf " Da %6s Hora %6s Llamada a %10s %5d min: %3d pasos %-5.6g ptas\n"\ ,dia"-"mes"-"ano,hora":"minuto,id,duracion_minutos\ ,pasos_v,pesetas(pasos_v) } function duracion(hora_ini, minuto_ini, hora_fin, minuto_fin, horas, minutos) { if ( hora_ini > hora_fin ) { horas = 24-hora_ini + hora_fin } else { horas = hora_fin - hora_ini } if ( minuto_ini > minuto_fin ) { minutos = 60-minuto_ini+minuto_fin } else { minutos = minuto_fin - minuto_ini } return horas*60*60+minutos*60 } function pesetas(pasos) { return ( pasos * coste * (1+iva) ) } function pasos(dia_semana,hora,duracion,tipo, tmp,pasos_v) { dia_semana=dia_semana+0 hora=hora+0 if (dia_semana == 6) {tmp="reducida"} else if (dia_semana == 5) { if (hora < 14 && hora >= 8 ) {tmp="punta"} else {tmp="reducida"} } else { if (hora < 17 && hora >= 8) {tmp="punta"} else if (hora >= 17 && hora < 22) {tmp="normal"} else {tmp="reducida"} } pasos_v=int(duracion/tarifa[tipo","tmp]) if (duracion%tarifa[tipo","tmp] > 0) {pasos_v++} pasos_v=pasos_v+pasos_iniciales[tipo] return pasos_v } function bisiesto(ano) { return (ano % 4 == 0) && (ano % 100 != 0) || (ano % 400 == 0) } function dia_semana(dia, mes, ano, ndias,i) { ndias = 0 for (i=1970; i <= ano -1 ; i++){ if (bisiesto(i)==1) { ndias = ndias + (366 % 7)} else { ndias = ndias + (365 % 7)} } for (i=1; i <= mes -1 ; i++) { if (i==4||i==6||i==9||i==11) { ndias = ndias + 30 } else if (i==2) { ndias = ndias + 28 } else { ndias = ndias + 31 } } if (bisiesto(ano) == 1) { if (mes> 2) { ndias = ndias +1 } } ndias = ndias + (dia - 1) return (ndias + 3) % 7 }