Hola a todos,

recientemente he instalado pppcost para que monitoree el gasto telef�nico en
mis conexiones v�a m�dem a Internet pero el fichero ~./pppcosts no refleja
nada coherente, despu�s de tres conexi�nes de menos de 20 minutos cada una,
este es su contenido:

[EMAIL PROTECTED] cat .pppcosts 
3324
25

�Hay que ponerle alguna opci�n a pppcosts para que vuelque informaci�n a
~./pppcosts?, �qu� significa lo contiene mi ~/.pppcosts?.

Por cierto, cuando conecto mediante wmppp, y tengo previamente lanzado
pppcosts, este �ltimo detecta bien cuando se produce la conexi�n pero el
tiempo de conexi�n comienza con 30 segundos, igual estoy preguntando una
idiotez porque es as� como factura Telf�nica pero, �por qu� sucede esto?.

Ya por �ltimo, alguien ha actualizado a mano el fichero "es-costs.c" con las
tarifas actuales, por favor si es� que me lo mande pues no se de donde sacar
todos los par�metros necesarios para actualizarlo yo.

Si alguien conoce alg�n m�todo mejor para vigilar el gasto telef�nico, le
agradecer�a que me lo contase, Xose Manoel me mand� el script que adjunto 
pero al intentar ejecutarlo me sucede lo siguiente:

[EMAIL PROTECTED] coste_infovia 
awk: ./coste_infovia: line 87: syntax error at or near pasos
awk: ./coste_infovia: line 104: syntax error at or near *
awk: ./coste_infovia: line 108: syntax error at or near duracion
awk: ./coste_infovia: line 152: runaway regular expression /tarifa[tip ...

Saludos y gracias.
-- 

Javier Vi�uales Guti�rrez 
[EMAIL PROTECTED]

#!/usr/bin/awk -f

BEGIN {
   ###################################################################
   #   Definici�n de variables necesarias para el programa           #
   ###################################################################

# no podemos sacar el a�o del log 
# por tanto tenemos que definirlo aqu�
ano=1997
# a donde hacemos la llamada
id="infov�a"
# tarifa aplicable
tipo ="local"

# Coste del paso y iva aplicable

iva = 0.16
coste = 5.7

# Datos para cada tipo de tarifa (duraci�n del paso y pasos iniciales)

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

}

# comienzo conexi�n

/Comienzo Conexi�n/ {
              split($3,x,":")
              hora=x[1]
              minuto=x[2]
              }
              
# final conexi�n

/Fin Conexi�n/ {
              split($3,x,":")
              duracion_v = duracion(hora, minuto, x[1], x[2])
              duracion_minutos=duracion_v / 60  
              dia_semana_v=int(index("NulMonTueWenThuFriSatSun",$1)/3)     
              pasos_v=pasos(dia_semana_v,hora,duracion_v,tipo)
              printf " D�a %6s Hora %6s Llamada a %10s   %5d min:  %3d pasos 
%-5.6g ptas\n"\
              ,$3,$2,id,duracion_minutos\
              ,pasos_v,pesetas(pasos_v) 
              } 


   ##################################################################
   #  Funciones necesarias para el funcionamiento del programa      #
   ##################################################################

   ##################################################################
   #  devuelve la duraci�n en segundos dandole hora de inicio y     #
   #  fin de algun suceso                                           #
   #                                                                #
   #  uso:                                                          #
   #                                                                #
   #    duracion(hora_ini, minuto_ini, hora_fin, minuto_fin)        #
   #                                                                #
   #   hora_ini, minuto_ini   hora y minuto del comenzo             #
   #   hora_fin, minuto_fin   hora y minuto del final               #
   #                                                                #
   ##################################################################
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 ;  
                                              horas = horas -1 }
              else { minutos = minuto_fin - minuto_ini }
              return horas*60*60+minutos*60
              }
function pesetas(pasos){
   ###################################################################
   #     devuelve el coste en pesetas de un n�mero de pasos          #
   #                                                                 #
   #    uso:                                                         #
   #                                                                 #
   #      pesetas(pasos)                                             #
   #                                                                 #
   #         pasos - un n�mero entero indicando el n�mero            #
   #                 de pasos consumidos                             #
   #                                                                 #
   #    necesita las variables:                                      #
   #                                                                 #
   #      coste - coste en pesetas de cada paso                      #
   #      iva   - iva en tanto por 1 (0.16)                          #
   #                                                                 #
   ###################################################################
     return ( pasos * coste * (1+iva) )
     }
    

function pasos(dia_semana,hora,duracion,tipo,  tmp,pasos_v) {
   ###################################################################
   #     devuelve el n�mero de pasos consumidos en la llamada        #
   #                                                                 #
   #  uso:                                                           #
   #                                                                 #
   #    pasos(dia_semana, hora, duracion, tipo)                      #
   #                                                                 #
   #      dia_semana: 0,1,2,3,4,6 (Lunes,Martes,....)                #
   #            hora: 9,20,0,14   (en formato 24 horas)              #
   #        duracion: 3612        (en segundos)                      #
   #            tipo: "local", "provincial", "nacional"              #
   #                                                                 #
   #   Adem�s deben existir los arrays:                              #
   #                                                                 #
   #    pasos_iniciales["tipo"] (pasos inciales que cobra la CNTE)   #
   #    tarifa["tipo,tarifa"]   (duraci�n del paso para cada horario)#
   #                                                                 #
   ###################################################################
      # Primero asignamos el tipo de tarifa
      ############################################
      # convertimos los par�metros a n�meros
      dia_semana=dia_semana+0
      hora=hora+0
      # si es domingo toda la tarifa es reducida
      if (dia_semana == 6) {tmp="reducida"}
      # si es s�bado
      else if (dia_semana == 5) {
             # entre 8 y 14 horas tarifa punta 
             if (hora < 14 && hora >= 8 ) {tmp="punta"}
             # si no reducida
             else           {tmp="reducida"}
             }
      # para el resto de los d�as de la semana
      else { 
             # entre 8 y 17 horas tarifa punta
             if (hora < 17 && hora >= 8) {tmp="punta"}
             # entre 17 y 22 horas tarifa normal
             else if (hora >= 17 && hora < 22)  {tmp="normal"}
             # en el resto del horario, tarifa reducida   
             else {tmp="reducida"}
           } 
      # Ahora vamos a calcular los pasos transcurridos
      ################################################
      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) {
  ###################################################################
  #   utilizaci�n:                                                  #
  #                                                                 #
  #        bisiesto (a�o)                                           #
  #                                                                 #
  #         a�o (en formato de cuatro cifras, eg: 1997)             #
  #                                                                 #
  #   devuelve:                                                     #
  #                                                                 #
  #         0 - no es bisiesto                                      #
  #         1 - es bisiesto                                         #
  #                                                                 #
  ###################################################################

      return (ano % 4 == 0) && (ano % 100 != 0) || (ano % 400 == 0)
      # es bisiesto si es divisible por 4 y no por 100
      # o es divisible por 400
      }

function dia_semana(dia, mes, ano,  ndias,i) {
    #################################################################
    # devuelve el d�a de la semana que era en una fecha determinada #
    # (s�lo funciona con fechas mayores a 1970 y incluso m�s all�   #
    # del 200)                                                      #
    #                                                               #
    # utilizaci�n:                                                  #
    #                                                               #
    #     dia_semana(dia,mes,a�o)                                   #
    #       dia (1-31)                                              #
    #       mes (1-12)                                              #
    #       a�o (1970-?)                                            #
    #                                                               #
    # devuelve:                                                     #
    #                                                               #
    #      un n�mero que quiere decir:                              #
    #                                                               #
    #         0 - Lunes                                             #
    #         1 - Martes                                            #
    #         2 - Miercoles                                         #
    #         3 - Jueves                                            #
    #         4 - Viernes                                           #
    #         5 - Sabado                                            #
    #         6 - Domingo                                           #
    #################################################################

    # contamos n�mero de d�as que pasaron desde 1970
    ndias = 0
    # primero los a�os
    for (i=1970; i <= ano -1 ; i++){
         if (bisiesto(i)==1)   { ndias = ndias + (366 % 7)}
                            else { ndias = ndias + (365 % 7)}
         }
    # luego los meses
    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 }
        }
    # si ese a�o es bisiesto y estamos luego de febrero
    # hay que sumar un d�a
    if (bisiesto(ano) == 1) {
          if      (mes> 2)      { ndias = ndias +1 }
          }
    # ahora sumamos los d�as del mes
    ndias = ndias + (dia - 1)
    # el 1/1/1970 era jueves. por tanto
    return (ndias + 3) % 7
    }


Responder a