Files
2024-10-14 00:08:40 +02:00

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, "<opc2.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, ">>opc2.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;