• Publicidad

Leer de un texto y lanzar líneas

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Leer de un texto y lanzar líneas

Notapor xigr » 2006-02-03 03:11 @174

¡Buenos días a todos y todas! :lol:

Bueno, soy bastante novato en Perl... ya he hecho algunos scripts pero a partir de alguno ya creado, pero me faltan muchas cositas por ver :)

Ahora tengo un problemita y no logro solucionarlo. Los scripts que hago son para lanzar configuraciones en enrutadores. Para pocas líneas de código del enrutador, éstas las meto en el mismo script, pero cuando tengo una configuración de 100 líneas, quisiera que el script fuera leyendo desde un archivo de texto y no sé cómo decirle "lee línea, pega... lee, pega..." ahora lo hago así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $session->waitfor(String => '#');
  2. $session->print ("conf t");
  3. $session->waitfor(String => '#');
  4. $session->print ("interface FastEthernet0/1");
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


¡¡Gracias!!

Saludos, Iñaki
xigr
Perlero nuevo
Perlero nuevo
 
Mensajes: 42
Registrado: 2006-02-03 02:51 @160

Publicidad

Re: Leer de un texto y lanzar líneas

Notapor explorer » 2006-02-03 07:06 @337

Lo que tienes que hacer es abrir (open) el fichero con las líneas de instrucciones como un fichero de texto normal, e ir leyendo línea a línea su contenido.

Ejemplo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. open($fichero, "<", 'ordenes.txt');
  2. while ( $linea = <$fichero> ) {
  3.     $session->waitfor(String => '#');
  4.     $session->print( $linea );
  5. }
  6. close $fichero;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

De todas formas, en el Tutorial del open tienes una buena introducción.

Otra forma: no indicar el fichero de órdenes en el código. Piensa que lo ideal sería: tener un programa que se conectara al enrutador y las líneas con las órdenes vienen de un fichero de texto que se lo paso al programa por la entrada estándar. Algo así como: perl envia.pl ordenes.txt

Lo que tengo que hacer entonces es leer las líneas que me van llegando por la entrada estándar. Perl abre el fichero que le hemos pasado como argumento y nos lo va dando por líneas:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
while ( $linea = <> ) {
    $session->waitfor(String => '#');
    $session->print( $linea );
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
y ya está, sin hacer open() ni close(). Y nos servirá para muchas más situaciones, con sólo tener distintos ficheros de órdenes.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor xigr » 2006-02-03 09:53 @453

¡¡Hola!!

¡¡¡¡Muchas gracias, explorer!!!! :D:D:D:D

El open() y close() lo utilizaba para leer IP de archivos de texto o crear otros en el caso de que no pudiera conectarme. Me quedaba el problema de hacer otro archivo para leer las líneas y lanzarlas, ¡je,je,je!

¡Muchísimas gracias! ::D:D


iñaki
xigr
Perlero nuevo
Perlero nuevo
 
Mensajes: 42
Registrado: 2006-02-03 02:51 @160


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 20 invitados