J'ai créé un perl telnet à plusieurs commutateurs. Mon code génère uniquement une sortie de fichier journal pour plusieurs commutateurs Cisco.Perl: journal séparé pour chaque périphérique et convertir IP à hostname à partir des noms de fichier journal
Que dois-je faire pour créer un fichier journal distinct pour chaque statut de périphérique (y compris l'échec telnet)? Et comment puis-je convertir IP à nom d'hôte à partir des noms de fichiers de journal?
Fichiers journaux de sortie souhaités un par un, nom_hôte1.log, nom_hôte2.log, nom_hôte3.log ...... et ainsi de suite.
Voici mon code:
#!/usr/bin/perl
use strict;
use warnings;
use Net::Cisco;
my $username="danny";
my $pass="1234";
open (OUTPUT, ">intstatus.log");
open (IP, "ip.txt") or die $!;
for my $line (<IP>) {
chomp $line;
$line =~ s/\t+//;
print $line, "\n";
SWTELNET($line); # pass $line as the argument to SWTELNET
}
sub SWTELNET {
my $host = shift; # $host is set to the first argument passed in from the above loop
my $t = Net::Telnet::Cisco -> new (
Host => $host,
Prompt => '/(?m:^(?:[\w.\/]+\:)?[\w.-]+\s?(?:\(config[^\)]*\))?\s?[\$#>]\s?(?:\(enable\))?\s*$)/',
Timeout => 6,
Errmode => 'return',
) or die "connect failed: $!";
if ($t->login($username,$pass)) {
$t->autopage;
$t->always_waitfor_prompt;
my @supenv=$t->cmd("show ip int br");
my @output =();
print OUTPUT "$host\[email protected]\n";
}
}
close(IP);
close(OUTPUT);
Maintenant, je peux créer un fichier journal séparé pour chaque statut de périphérique. Cependant, les fichiers journaux sont toujours indiqués par IP. Le programme arrête de fonctionner et ne passe pas automatiquement à l'appareil suivant lorsque la panne de telnet se produit, s'il vous plaît veuillez le conseiller? Merci beaucoup. –
Eh bien, avez-vous un DNS inversé pour les adresses IP auxquelles vous vous connectez? Sinon, vous serez bloqué avec l'adresse IP. Pour autant que vous ne progressiez pas avec les erreurs, il serait utile que vous spécifiiez les erreurs que vous obtenez. En outre, avez-vous essayé de lire la documentation ou peut-être essayer un 'eval' où il échoue? – stevieb