#!/usr/bin/perl use strict; my $path="/usr/lib64/nagios/plugins"; my $smsfile="$path/sms_receiver"; my $smsinpath="/var/spool/sms/incoming"; my $smsoutpath="/var/spool/sms/outgoing"; my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time); my $smssetout="$smsoutpath/setout_" . sprintf("%4d-%02d-%02d_%02d-%02d-%02d", $year+1900, $mon+1, $mday, $hour, $min, $sec); my $smsgetout="$smsoutpath/getout_" . sprintf("%4d-%02d-%02d_%02d-%02d-%02d", $year+1900, $mon+1, $mday, $hour, $min, $sec); opendir(DH, $smsinpath) || die "Kann SMS Eingangsverzeichnis nicht oeffnen!\n"; my $file; while(($file = readdir(DH))) { next if $file =~ /^\./; print "$smsinpath/$file\n"; my $fromnr; my $tonr; open SMS, "<$smsinpath/$file" || die "Kann SMS nicht lesen!\n"; open LOGR, ">>/var/log/read_sms"; printf LOGR "### %4d-%02d-%02d %02d-%02d-%02d\n", $year+1900, $mon+1, $mday, $hour, $min, $sec; while () { chomp; printf LOGR "$_\n"; if ($_ =~ /^From: /) { ($fromnr)=$_=~/^From: ([0-9]*)/; #print "$fromnr\n"; } if ($_ =~ /GETBEREIT/) { print "GET\n"; open NR, "<$smsfile"; $tonr=; close NR; open SMS, ">$smsgetout"; open LOG, ">>/var/log/send_sms"; printf LOG "### %4d-%02d-%02d %02d-%02d-%02d\n", $year+1900, $mon+1, $mday, $hour, $min, $sec; printf SMS "To: $fromnr\n\nAlarme gehen an $tonr"; printf LOG "To: $fromnr\n\nAlarme gehen an $tonr"; close SMS; close LOG; } if ($_ =~ /SETBEREIT/) { print "SET\n"; print "Schreibe $fromnr nach $smsfile\n"; open NR, ">$smsfile"; printf NR "$fromnr"; close NR; #print "Schreibe SMS an $smssetout\n"; open SMS, ">$smssetout"; open LOG, ">>/var/log/send_sms"; printf LOG "### %4d-%02d-%02d %02d-%02d-%02d\n", $year+1900, $mon+1, $mday, $hour, $min, $sec; printf SMS "To: $fromnr\n\nAlarme gehen jetzt an $fromnr"; printf LOG "To: $fromnr\n\nAlarme gehen jetzt an $fromnr"; close SMS; close LOG; } } close SMS; close LOGR; unlink "$smsinpath/$file"; } closedir DH;