SNMPセッションを開始し、データ/カウンターとその値をcsvファイルに抽出するPerlスクリプトを作成しました。7つのperlスクリプトがあります。上部に異なるプロパティ/定義/変数がありますが、エンジンは同じです。
この時点で、これらの7つのperlスクリプトは、定義された変数を除いて冗長です。実行perlスクリプトをプロパティ/実行ファイルとして保持し、エンジンを別のファイルに保持する方法はありますか?このプロパティ/実行perlスクリプトは、エンジンを呼び出します(独自のスクリプトで定義されたプロパティを使用)。
つまり、変数を独自のスクリプトで(実行としても)使用したいのですが、統一された「エンジン」から特定の関数を呼び出します。
すなわち
retrieve_mibs1.pl retrieve_mibs2.pl retrieve_mibs3.pl retrieve_mibs4.pl retrieve_mibs5.pl retrieve_mibs6.pl retrieve_mibs7.pl
retrieve_mibs1.pl
#!/usr/local/bin/perl
use Net::SNMP;
##DEFINITION START
my @Servers = (
'server1',
'server2',
);
my $PORT = 161;
my $COMMUNITY = 'secret';
my $BASEOID = '1.2.3.4.5.6.7.8';
my $COUNTERS = [
[11,'TotalIncomingFromPPH'],
[12,'TotalFailedIncomingFromPPH'],
];
##ENGINE START
sub main {
my $stamp = gmtime();
my @oids = ();
foreach my $counter (@$COUNTERS) {
push @oids,("$BASEOID.$$counter[0].0");
}
foreach my $server (@Servers) {
print "$stamp$SEPARATOR$server";
my ($session,$error) = Net::SNMP->session(-version => 1,-hostname => $server,-port => $PORT,-community => $COMMUNITY);
if ($session) {
my $result = $session->get_request(-varbindlist => \@oids);
if (defined $result) {
foreach my $oid (@oids) {
print $SEPARATOR,$result->{$oid};
}
} else {
print STDERR "$stamp Request error: ",$session->error,"\n";
print "$SEPARATOR-1" x scalar(@oids);
}
} else {
print STDERR "$stamp Session error: $error\n";
print "$SEPARATOR-1" x scalar(@oids);
}
print "\n";
}
}
main();