Mie Feb 22, 2006 2:08 am
|
 |
xigr
Perlero Nuevo

|
Registrado: 03 Feb 2006
Mensajes: 42
|
|
| Use of uninitialized value in pattern match (m//) at... |
|
|
buenos días!
pues nosé pq me hace lo siguiente :s para unos switch no hay problema, y para otros leyendo lo mismo si. capturo varios datos de al hacer "show version" en este caso capturo el modelo del switch para luego poner unas u otras configuraciones, pero no sé pq me sale el error.
las primeras líneas que captura son: (y yo le digo que lea la segunda, y siempre es la segunda)
Switch>sh version
Cisco Internetwork Operating System Software
IOS (tm) C2950 Software (C2950-C3H2S-M), Version 12.0(5.3)WC(1), MAINTENANCE INTERIM SOFTWARE
Accediendo al Switch 4: 10.96.216.230
Modelo switch --> C2900XL
Accediendo al Switch 5: 10.227.99.113
Use of uninitialized value in split at grgrgrSwitch.pl line 56, <FILE> line 5.
Use of uninitialized value in pattern match (m//) at grgrgrSwitch.pl line 58, <FILE> line 5.
Use of uninitialized value in concatenation (.) or string at grgrgrSwitch.pl line 60, <FILE> line 5.
Modelo switch -->
En el script lo tengo puesto así:
$session->cmd('show ver');
@salida=$session->waitfor(String => 'Switch#');
$resul=$salida[0];
@lineas = split(/\n/, $resul);
$model=$lineas[2];
($model2) = $model =~ m/^IOS \(tm\) (.+) Software/;
es más... acabo de lanzarlo otra vez, y sin hacer cambios ahora no da error el que antes si lo daba :s
Accediendo al Switch 5: 10.227.99.113
Modelo switch --> C2900XL
gracias!
iñaki |
|
|
|

Mie Feb 22, 2006 6:02 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4082
Ubicación: Valladolid, España
|
|
|
|
|
No sé a qué puede deberse el error...
Puedes hacer varias cosas. Puedes utilizar errmode y errmsg para intentar averiguar si ocurre algún tipo de error en el momento de enviar y recibir.
Si es algo que al final no se puede solucionar (es decir, es completamente aleatorio que los switchs generen una salida correcta o no), puedes incluir tus líneas de petición de información dentro de un bucle.
Algo así como (no probado):
| Código: |
my $intentos = 0;
my $resultado;
while ( not defined($resultado) and $intentos < 3 ) {
$session->cmd('show ver');
($resultado, undef) = $session->waitfor(String => 'Switch#');
$intentos++;
}
die "No pude conectarme!" if $intentos == 4;
my @lineas = split ... |
|
|

Mie Feb 22, 2006 8:57 am
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
|
|
|
|
|
Hola:
Para que no te siga apareciendo el error, cambia la parte que dice:
| Código: |
($model2) = $model =~ m/^IOS \(tm\) (.+) Software/;
|
a lo siguiente
| Código: |
my $model2 = '';
if($model =~ m/^IOS \(tm\) (.+) Software/){
$model2 = $1;
}
|
SALUDOS |
|
Mie Feb 22, 2006 9:33 am
|
 |
xigr
Perlero Nuevo

|
Registrado: 03 Feb 2006
Mensajes: 42
|
|
|
|
|
gracias!
podrías ser porque capturara algún espacio en blanco?¿ es decir, por otros scripts me ha parecido que ese error, o similar, me ha salido al decirle "captura linea 4" y esa linea estubiera vacía :s
de todas formas, usaré las variables para los errores ahora, a ver que me dice.
saludos,
iñaki |
|
Mie Feb 22, 2006 11:41 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4082
Ubicación: Valladolid, España
|
|
|
|
|
Pues sí... podría ser...
Habría que echar un vistazo al código de Net::Telnet, por si acaso... |
|
Powered by phpBB © 2001, 2005 phpBB Group
|