/[mon-modules]/sms.alert
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /sms.alert

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.5 - (show annotations)
Fri Feb 14 14:52:02 2003 UTC (21 years, 1 month ago) by dpavlin
Branch: MAIN
Changes since 1.4: +3 -1 lines
fix warning about undef vars

1 #!/usr/bin/perl -w
2 #
3 # sms.alert - send an alert via smstools available at
4 # http://www.isis.de/~s.frings/smstools/
5 #
6 # based on qpage.alert and mail.alert by Jim Trocki, trockij@transmeta.com
7 #
8 # usage:
9 # sms.alter [flags...] -g group -s system 385abxxxxxx|name[ 12345|name...]
10 #
11 # flags which are standard:
12 #
13 # -u this is upalert
14 # -g grp group
15 # -s sys system
16 # -l time time to next alert
17 #
18 # flags specific to sms.alert: (all optional)
19 #
20 # -f send flash sms (directly to screen)
21 # -x send extended message (all output, smstools with split it in
22 # multiple smses if needed)
23 #
24 # it users file /usr/local/etc/sms.addressbook as addressbook in format
25 #
26 # 123456 name
27 #
28 # where 123456 is phone number (with country prefix, but without +) and
29 # name is alias used like:
30 #
31 # sms.alter -f dobrica
32 #
33 # in mon.cf
34
35 my $sms_outgoing = "/var/spool/sms/outgoing";
36 my $sms_addressbook = "/usr/local/etc/sms.addressbook";
37
38 use strict;
39 my %opt;
40 use Getopt::Std;
41 getopts ("S:s:g:h:t:l:uf");
42
43 # read addressbook
44 my %name2phone;
45 if (open(A, $sms_addressbook)) {
46 while(<A>) {
47 chomp;
48 next if (/^[#;]/);
49 my ($phone,$name) = split(/\s+/,$_,2);
50 $name2phone{lc($name)} = $phone;
51 }
52 }
53
54 #
55 # the first line is summary information, adequate to send to a pager
56 # or email subject line
57 #
58 #
59 # the following lines normally contain more detailed information,
60 # but this is monitor-dependent
61 #
62 my @MSG=<STDIN>;
63 my $summary = shift @MSG;
64 chomp $summary;
65
66 $summary = $opt{S} if $opt{S};
67
68 my ($wday,$mon,$day,$tm) = split (/\s+/, localtime);
69
70 my $ALERT = $opt{u} ? "UPALERT" : "ALERT";
71
72 my $sms = "From: mon\n";
73 $sms .= "Flash: yes\n" if $opt{f};
74 $sms .= "\n$ALERT";
75 $sms .= " $opt{g}/$opt{s}" if ($opt{g} && $opt{s});
76 $sms .= " $summary ($wday $mon $day $tm)\n";
77 # add next alter time
78 $sms .= "Secs until next alert: $opt{l}\n" if $opt{l};
79 # add rest of text
80 $sms .= join("\n",@MSG) if $opt{x};
81
82 foreach my $to (@ARGV) {
83 if (open(SMS, "> $sms_outgoing/mon$$")) {
84 my $phone = $to;
85 $phone = $name2phone{lc($to)} if ($name2phone{lc($to)});
86 die "$phone is not phone number! " if ($phone !~ m/^\d+$/);
87 print SMS "To: $phone\n$sms";
88 close SMS;
89 } else {
90 die "could not open sms file in '$sms_outgoing': $!";
91 }
92 }

  ViewVC Help
Powered by ViewVC 1.1.26