0
我創建了一個遠程連接到多個交換機的perl。我的代碼僅爲多個思科交換機生成一個日誌文件輸出。Perl:爲每個設備分別記錄日誌並將日誌文件名中的IP轉換爲主機名
我該如何爲每個設備狀態創建單獨的日誌文件(包括telnet失敗)? 我怎麼能從日誌文件名轉換IP到主機名?
所需的輸出日誌文件一個接一個,hostname1.log,hostname2.log,hostname3.log ......等等。
這裏是我的代碼:
#!/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);
現在我可以爲每個設備狀態創建單獨的日誌文件。但日誌文件仍由IP指示。程序停止運行,並且在telnet發生故障時不會自動進入下一個設備,請注意?非常感謝你。 –
那麼,您是否爲您連接的IP地址設置了反向DNS?如果沒有,你會被困在IP中。只要沒有錯誤進展,如果你指定了什麼錯誤,它會有所幫助。另外,你有沒有嘗試閱讀文檔,或嘗試一個'eval',它失敗了? – stevieb