Script en PERL para conexion telefonica en Windows

JosueCool's picture

Aquí se detalla un script que desarrollé en Perl para mi conexión a NIU Banda Ancha de Alegro. Al ser una conexión inalámbrica (CDMA 1xEVDO)suele producir desconexiones indeseables que dejan las descargas inconclusas y por ello traté de hacer un BATCH sin éxito y probé con Perl que me dió buenos resultados como menciona bitfrost en otro caso similar en este comentario. A continuación el script:

#!/usr/local/perl
#
# Script que me permite conectar a Alegro de Forma Indefinida.
# Saludos,
# JosueCool

use strict;
use warnings;

my @estado;

while("true"){
#Obtener la salida del comando
open(ESTADO,"rasdial|");
#Asignar la salida a una variable
@estado=<ESTADO>;
close(ESTADO);
if ($estado[0] eq "Conectado a\n") {
} else {
#Realizar la conexión
system("rasdial \"ALEGRO 1x EVDO\" 096307320 05B9852D /PHONE:#777");
}
}

Explicación breve:

rasdial: Es un comando MS-DOS para conectarnos a la red. Devuelve ademas el estado de la conexión.

open() permite leer/escribir un archivo y operarlo a través de un filehandle para que Perl pueda manipular un archivo. El pipe "|" al final del comando rasdial indica a Perl que la salida generada por rasdial sea almacenada en el filehandle ESTADO, posteriormente se asigna esa salida a un arreglo o array que se identifica con la @ al lado de una variable.

Tomado el estado, se verifica si esta "Conectado a"; si es así no hay mas que hacer, pero, caso contrario ejecutar system() que similar a open() permite ejecutar comandos aunque no se puede tomar entrada/salida de los datos, el cual manda a rasdial como parámetros la conexión existente en las Conexiones de red, el usuario, la clave y el número a marcar.

Esta en bucle infinito precisamente para que cuando se caiga la conexión esta se restablezca inmediatamente.

Saludos,
JosueCool

AttachmentSize
JosueCool.pl_.txt426 bytes