]> git.llucax.com Git - z.facultad/75.08/llamadas.git/commitdiff
callgen migrado a perl, ahora anda como la gente. Falta tomar los nombres de destino...
authorLeandro Lucarella <llucax@gmail.com>
Tue, 19 Oct 2004 19:30:02 +0000 (19:30 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Tue, 19 Oct 2004 19:30:02 +0000 (19:30 +0000)
util/callgen [new file with mode: 0755]
util/callgen.sh [deleted file]

diff --git a/util/callgen b/util/callgen
new file mode 100755 (executable)
index 0000000..2580ee8
--- /dev/null
@@ -0,0 +1,101 @@
+#!/usr/bin/perl -w
+#
+# Generador aleatorio de archivos de llamadas
+#
+# Leandro Lucarella - dom oct 17 18:37:05 ART 2004
+#
+# Bajo licencia GPL.
+#
+# Uso:
+#      ./gencall.pl [cant_archivos [min_lineas [max_lineas]]]
+#
+# cant_archivos                Cantidad de archivos a generar.
+#
+
+# Configuración
+$CANT_ARCHS=10;
+$MIN_LINEAS=1000;
+$MAX_LINEAS=5000;
+
+#{{{ Funciones
+
+#{{{ rnd() - Genera números aleatorios
+# Uso: rnd(MAX)      - genera número de 0 a MAX (inclusive)
+#      rnd(MIN, MAX) - genera número de MIN a MAX (inclusive)
+#
+# Nota: respeta el tamaño del campo más chico, es decir, si se usa rnd 01 250,
+#       el número siempre tendrá al menos 2 dígitos rellenados con ceros, como
+#       04, 28, 123, 08, etc
+sub rnd($;$)
+{
+       my ($ini, $fin) = @_;
+       if (!$fin)
+       {
+               $fin = $ini;
+               $ini = 0;
+       }
+       return sprintf('%0'.length($ini).'d', $ini + rand() * ($fin - $ini + 1));
+}
+#}}}
+
+#{{{ Tipos de campos
+sub aaaa() { return rnd(1999, 2004); }    # año
+sub mm()   { return rnd("01", 12); }      # mes
+sub dd()   { return rnd("01", 28); }      # día
+sub hh()   { return rnd("00", 23); }      # hora
+sub MM()   { return rnd("00", 59); }      # minutos
+sub DDDD() { return rnd("0000", 9999); }  # código de central telefónica
+sub char() { return chr(rnd(65, 90)); }   # caracter aleatorio
+#}}}
+
+#{{{ line() - Genera una línea del archivo
+sub line()
+{
+       my $f_linea   = rnd(100000, 99999999);
+       my $f_minutos = rnd(1, 150);
+       my $f_fecha   = aaaa().mm().dd();
+       my $f_hora    = dd().hh().MM();
+       my ($f_tipo, $f_orig, $f_dest) = ('', '', '');
+       if (rnd(1) == 1)
+       {
+               $f_tipo = 'E';
+               $f_orig = char().char();
+       }
+       else
+       {
+               $f_tipo = 'S';
+               $f_dest = char().char();
+       }
+       my $f_prest = char().char().char().char().char().char().char().char().char();
+       return "$f_linea;$f_minutos;$f_fecha;$f_hora;$f_tipo;$f_dest;$f_orig;$f_prest";
+}
+#}}}
+
+#{{{ gen() - Genera un archivo con entre MIN y MAX llamadas
+# Uso: gen MIN MAX
+sub gen($$)
+{
+       my ($ini, $fin) = @_;
+       my $file = aaaa().mm().dd().hh().MM().'.'.DDDD();
+       # Mientras exista uno, buscamos un nuevo nombre.
+       $file = aaaa().mm().dd().hh().MM().'.'.DDDD() while (-e $file);
+       open(FH, ">$file") or die("No puedo abrir el archivo $file!\n");
+       for (my $i = rnd($ini, $fin); $i > 0; --$i)
+       {
+               print FH line()."\n";
+       }
+}
+#}}}
+
+#}}}
+
+#{{{ Programa
+srand;
+my $cant = $ARGV[0] ? $ARGV[0] : $CANT_ARCHS;
+for (my $i = 0; $i < $cant; ++$i)
+{
+       gen($ARGV[1] ? $ARGV[1] : $MIN_LINEAS, $ARGV[2] ? $ARGV[2] : $MAX_LINEAS);
+}
+#}}}
+
+# vim: set fdm=marker ts=4 sw=4 :
diff --git a/util/callgen.sh b/util/callgen.sh
deleted file mode 100755 (executable)
index baba1ea..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-#!/bin/bash
-#
-# Generador aleatorio de archivos de llamadas
-#
-# Leandro Lucarella - dom oct 17 18:37:05 ART 2004
-#
-# Bajo licencia GPL.
-#
-
-#{{{ Funciones
-
-#{{{ ltrim() - Saca ceros de adelante
-# Uso: ltrim NUMERO
-ltrim()
-{
-       echo -n $1 | sed 's/^0*//g'
-}
-#}}}
-
-#{{{ rnd() - Genera números aleatorios
-# Uso: rnd MAX      - genera número de 0 a MAX (inclusive)
-#      rnd MIN MAX  - genera número de MIN a MAX (inclusive)
-#
-# Nota: respeta el tamaño del campo más chico, es decir, si se usa rnd 01 250,
-#       el número siempre tendrá al menos 2 dígitos rellenados con ceros, como
-#       04, 28, 123, 08, etc
-rnd()
-{
-       ini="$1"
-       fin="$2"
-       # Si no hay fin, ponemos ini como fin y 0 como ini.
-       if [ -z "$fin" ]; then
-               fin="$ini"
-               ini=0
-       else
-               size=${#ini}
-       fi
-       ini=`ltrim $ini`
-       fin=`ltrim $fin`
-       [ -z $ini ] && ini=0 # si después del trim me quedé sin nada era un cero
-       [ -z $fin ] && fin=0
-       n=`date +%N` # obtengo los microsegundos de la fecha actual
-       n=${n:0:6} # primero 6 digitos
-       n=`ltrim $n`
-       n2=`date +%N` # obtengo los microsegundos de la fecha actual
-       n2=${n2:0:6} # primero 6 digitos
-       n="$n$n2" # mi numero aleatorio de 12 digitos
-       n=$(($ini + $n % ($fin + 1 - $ini))) # número aleatorio entre ini y fin
-       if [ -n $size ]; then
-               printf "%0${size}d" $n
-       else
-               echo -n $n
-       fi
-}
-#}}}
-
-#{{{ chr() - Convierte un decimal a char
-chr()
-{
-       echo -ne "\x`printf "%x" "$1"`"
-}
-#}}}
-
-#{{{ Tipos de campos
-aaaa() { rnd 1999 2004; }    # año
-mm() { rnd 01 12; }          # mes
-dd() { rnd 01 28; }          # día
-hh() { rnd 00 23; }          # hora
-MM() { rnd 00 59;    }       # minutos
-DDDD() { rnd 0000 9999; }    # código de central telefónica
-char() { chr `rnd 65 90`; }  # caracter aleatorio
-#}}}
-
-#{{{ line() - Genera una línea del archivo
-line()
-{
-       f_linea=`rnd 100000 99999999`
-       f_minutos=`rnd 1 150`
-       f_fecha=$(aaaa;mm;dd)
-       f_hora=$(dd;hh;MM)
-       unset f_orig
-       unset f_dest
-       if [ `rnd 1` -eq 1 ]; then
-               f_tipo=E
-               f_orig=$(char;char)
-       else
-               f_tipo=S
-               f_dest=$(char;char)
-       fi
-       f_prest=$(char;char;char;char;char;char;char;char;char;char)
-       echo "$f_linea;$f_minutos;$f_fecha;$f_hora;$f_tipo;$f_dest;$f_orig;$f_prest"
-}
-#}}}
-
-#{{{ gen() - Genera un archivo con entre MIN y MAX llamadas
-# Uso: gen MIN MAX
-gen()
-{
-       file="$(aaaa;mm;dd;hh;MM).$(DDDD)"
-       [ -e $file ] && exit 1
-       touch $file # creo archivo
-       veces=$(rnd $1 $2)
-       for i in $(seq $veces); do
-               line >> $file
-       done
-}
-#}}}
-
-#}}}
-
-# Configuración
-MIN_LINEAS=10
-MAX_LINEAS=50
-
-#{{{ Programa
-gen ${1:-$MIN_LINEAS} ${2:-$MAX_LINEAS}
-#}}}
-
-# vim: set fdm=marker ts=4 sw=4 :