#!/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, " ) { if ( $_ =~ /count/ ) { @TEMP = split /=/, $_; $count = @TEMP[1]; } if ( $_ =~ /dest/) { @TEMP = split /=/, $_; @DEST = (@DEST, $TEMP[1]); } } while () { 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;