80 lines
2.1 KiB
Perl
80 lines
2.1 KiB
Perl
#!/bin/perl
|
|
|
|
#use strict;
|
|
|
|
my $hostname;
|
|
my $mall;
|
|
my @ausg;
|
|
my %para;
|
|
my $k;
|
|
my $v;
|
|
my @msg_in;
|
|
my %OPC;
|
|
my $txt;
|
|
my @TEMP;
|
|
my @DEST;
|
|
my $count;
|
|
my $host;
|
|
my $i;
|
|
my ($sekunden, $minuten, $stunde, $tag, $monat, $jahr, $wochentag, $tag_im_jahr, $ist_sommerzeit);
|
|
|
|
$hostname = `hostname`;
|
|
chomp $hostname;
|
|
$mall = "-m all";
|
|
my $order;
|
|
|
|
foreach (@ARGV) {
|
|
($k,$v)=split /=/,$_;
|
|
$para{$k}=$v;
|
|
}
|
|
|
|
open TAB, "<opc.tab" or die "$!";
|
|
open CONF, "<opc.conf" or die "$!";
|
|
|
|
while ( <CONF> ) {
|
|
if ( $_ =~ /count/ ) {
|
|
@TEMP = split /=/, $_;
|
|
$count = @TEMP[1];
|
|
}
|
|
if ( $_ =~ /dest/) {
|
|
@TEMP = split /=/, $_;
|
|
@DEST = (@DEST, $TEMP[1]);
|
|
}
|
|
}
|
|
|
|
while (<TAB>) {
|
|
chomp;
|
|
@msg_in = split /,/,$_;
|
|
$OPC{$msg_in[0]}=$msg_in[1];
|
|
}
|
|
chomp %OPC;
|
|
|
|
$txt="$para{'T'}";
|
|
open OUT, ">>opc.log";
|
|
foreach $host(@DEST) {
|
|
chomp $host;
|
|
for($i=1;$i<=$count;$i++) {
|
|
($sekunden, $minuten, $stunde, $tag, $monat, $jahr, $wochentag, $tag_im_jahr, $ist_sommerzeit) = localtime;
|
|
if ($OPC{$para{"O"}}eq undef ) {
|
|
printf(OUT "%4d-%02d-%02d %02d:%02d:%02d OPC-Message (%s) not defined or not found!\n",$jahr+1900,$monat+1,$tag,$stunde,$minuten,$sekunden,$para{'O'});
|
|
if ($ENV{"OS"} eq "Windows_NT") {
|
|
@ausg=`snmptrap $mall $host public .1.3.6.1.4.1.2222 $hostname 6 999 0 .1.3.6.1.4.1.0.2222 string "UNDEF_OPC_MSG:$OPC{$para{'O'}}"`;
|
|
}
|
|
else {
|
|
@ausg=`snmptrap -c public $host .1.3.6.1.4.1.2222 $hostname 6 999 0 .1.3.6.1.4.1.0.2222 octetstring "UNDEF_OPC_MSG:$OPC{$para{'O'}}"`;
|
|
}
|
|
}
|
|
else {
|
|
if ($ENV{"OS"} eq "Windows_NT") {
|
|
@ausg=`snmptrap $mall $host public .1.3.6.1.4.1.2222 $hostname 6 $OPC{$para{"O"}} 0 .1.3.6.1.4.1.0.2222 string $txt`;
|
|
}
|
|
else {
|
|
@ausg = `snmptrap -c public $host .1.3.6.1.4.1.2222 $hostname 6 $OPC{$para{"O"}} 0 .1.3.6.1.4.1.0.2222 octetstring $txt`;
|
|
}
|
|
printf(OUT "%4d-%02d-%02d %02d:%02d:%02d Send OPC-Message (%s %s) (%s) to %s\n",$jahr+1900,$monat+1,$tag,$stunde,$minuten,$sekunden,$para{'O'},$OPC{$para{'O'}},$txt,$host);
|
|
#print OUT "Send OPC-Message ($para{'O'} $OPC{$para{'O'}}) ($txt) to $host\n";
|
|
}
|
|
}
|
|
}
|
|
close OUT;
|