#!/usr/bin/perl use strict; use warnings; use Net::SMPP; use lib '/usr/lib/perl5'; use PandoraFMS::PluginTools qw(read_configuration); my $HELP =< -user -password -source -destination -message [OPTIONS] - Comma separated list of destination numbers (123456789,234567891,...) OPTIONS: -service_type Default: '' -source_addr_ton Default: 0x00 -source_addr_npi Default: 0x00 -dest_addr_ton Default: 0x00 -dest_addr_npi Default: 0x00 -esm_class Default: 0x00 -protocol_id Default: 0x00 -priority_flag Default: 0x00 -schedule_delivery_time Default: '' -validity_period Default: '' -registered_delivery Default: 0x00 -replace_if_present_flag Default: 0x00 -data_coding Default: 0x00 -sm_default_msg_id Default: 0x00 -system_type Default: '' -interface_version Default: 0x34 -addr_ton Default: 0x00 -addr_npi Default: 0x00 -address_range Default: '' Example: $0 -server 192.168.1.50:2775 -user myuser -password mypassword -source 123456789 -destination 234567891 -message "Content of SMS message" EO_H my $config; $config = read_configuration($config); if (!$config->{'server'}){ print "Parameter -server is mandatory."; print $HELP; exit; } if (!$config->{'user'}){ print "Parameter -user is mandatory."; print $HELP; exit; } if (!$config->{'password'}){ print "Parameter -password is mandatory."; print $HELP; exit; } if (!$config->{'source'}){ print "Parameter -source is mandatory."; print $HELP; exit; } if (!$config->{'destination'}){ print "Parameter -destination is mandatory."; print $HELP; exit; } if (!$config->{'message'}){ print "Parameter -message is mandatory."; print $HELP; exit; } my ($smsc_server, $smsc_port) = split /:/, $config->{'server'}; my @destination_numbers = split /,/, $config->{'destination'}; if (!$smsc_port){ $smsc_port = 2775; } $config->{'service_type'} = '' if (!$config->{'service_type'}); $config->{'source_addr_ton'} = '0x00' if (!$config->{'source_addr_ton'}); $config->{'source_addr_npi'} = '0x00' if (!$config->{'source_addr_npi'}); $config->{'dest_addr_ton'} = '0x00' if (!$config->{'dest_addr_ton'}); $config->{'dest_addr_npi'} = '0x00' if (!$config->{'dest_addr_npi'}); $config->{'esm_class'} = '0x00' if (!$config->{'esm_class'}); $config->{'protocol_id'} = '0x00' if (!$config->{'protocol_id'}); $config->{'priority_flag'} = '0x00' if (!$config->{'priority_flag'}); $config->{'schedule_delivery_time'} = '' if (!$config->{'schedule_delivery_time'}); $config->{'validity_period'} = '' if (!$config->{'validity_period'}); $config->{'registered_delivery'} = '0x00' if (!$config->{'registered_delivery'}); $config->{'replace_if_present_flag'} = '0x00' if (!$config->{'replace_if_present_flag'}); $config->{'data_coding'} = '0x00' if (!$config->{'data_coding'}); $config->{'sm_default_msg_id'} = '0x00' if (!$config->{'sm_default_msg_id'}); $config->{'system_type'} = '' if (!$config->{'system_type'}); $config->{'interface_version'} = '0x34' if (!$config->{'interface_version'}); $config->{'addr_ton'} = '0x00' if (!$config->{'addr_ton'}); $config->{'addr_npi'} = '0x00' if (!$config->{'addr_npi'}); $config->{'address_range'} = '' if (!$config->{'address_range'}); my $smpp = Net::SMPP->new_transmitter( $smsc_server, port => $smsc_port, system_id => $config->{'user'}, password => $config->{'password'}, system_type => $config->{'system_type'}, interface_version => $config->{'interface_version'}, addr_ton => $config->{'addr_ton'}, addr_npi => $config->{'addr_npi'}, address_range => $config->{'address_range'} ) or die "Unable to connect to [$smsc_server] on port [$smsc_port] with user [" . $config->{'user'} . "]\n"; foreach my $destination_number (@destination_numbers){ my $resp_pdu = $smpp->submit_sm( source_addr => $config->{'source'}, destination_addr => $destination_number, short_message => $config->{'message'}, service_type => $config->{'service_type'}, source_addr_ton => $config->{'source_addr_ton'}, source_addr_npi => $config->{'source_addr_npi'}, dest_addr_ton => $config->{'dest_addr_ton'}, dest_addr_npi => $config->{'dest_addr_npi'}, esm_class => $config->{'esm_class'}, protocol_id => $config->{'protocol_id'}, priority_flag => $config->{'priority_flag'}, schedule_delivery_time => $config->{'schedule_delivery_time'}, validity_period => $config->{'validity_period'}, registered_delivery => $config->{'registered_delivery'}, replace_if_present_flag => $config->{'replace_if_present_flag'}, data_coding => $config->{'data_coding'}, sm_default_msg_id => $config->{'sm_default_msg_id'} ); if ($resp_pdu->{message_id}){ print "SUCCESS: Message sent to [$destination_number]\n"; }else{ print "ERROR: Unable to send message to [$destination_number] - Response error: " . $resp_pdu->explain_status() . "\n"; } }