Centos EMail to SMS мегафон модем E1550

[root@mng ~]#wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
[root@mng ~]#rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
[root@mng ~]#rpm -K rpmforge-release-0.5.2-2.el6.rf.*.rpm
[root@mng ~]#yum install usb_modeswitch
[root@mng ~]#yum install minicom 
[root@mng ~]#yum install smstools usbtools
[root@mng ~]#minicom -s

Serial-port /dev/ttyUSB0

Welcome to minicom 2.3

OPTIONS: I18n
Compiled on Aug 19 2010, 05:50:19.
Port /dev/ttyUSB0

                 Press CTRL-A Z for help on special keys

AT S7=45 S0=0 L1 V1 X4 &c1 E1 Q0
OK

Проверка уровня сигнала 
AT+CSQ
+CSQ: 15,99
Пробум отправку смс

AT+CMGF=1
AT+CMGS="+7965XXXXXXX"
> TEST
><CTRL+Z>

+CMGS: 6

OK

<Ctrl>+A Q Для выхода с терминала миником
[root@mng ~]# wget http://smstools3.kekekasvi.com/packages/smstools3-3.1.15.tar.gz
[root@mng smstools3]# make -s install

Installing binary program files
  /usr/local/bin/smsd
Installing some scripts
  /usr/local/bin/sendsms
  /usr/local/bin/sms2html
  /usr/local/bin/sms2unicode
  /usr/local/bin/unicode2sms
Installing config file
  Skipped /etc/smsd.conf, file already exists
Creating minimum spool directories
  Skipped /var/spool, directory already exists
  Creating directory /var/spool/sms
  Creating directory /var/spool/sms/incoming
  Creating directory /var/spool/sms/outgoing
  Creating directory /var/spool/sms/checked
Installing start-script
  /etc/init.d/sms3

Example script files are not installed automatically.
Please dont forget to edit /etc/smsd.conf.
[root@mng smstools3]# cat /etc/smsd.conf
devices = GSM1
incoming=/var/spool/sms/incoming
outgoing=/var/spool/sms/outgoing
checked=/var/spool/sms/checked
sent=/var/spool/sms/sent
logfile = /var/log/smsd/smsd.log
loglevel = 7 #debug = 7
user = sms
smart_logging = yes

[GSM1]
device = /dev/ttyUSB0

[root@mng smstools3]# mkdir /var/spool/sms/sent
[root@mng smstools3]# /etc/init.d/sms3 start
Starting SMS Daemon: smsd.

[root@mng smstools3]#  ps ax | grep sms
12005 ?        Ss     0:00 /usr/local/bin/smsd -n MAINPROCESS -p/var/run/smsd.pid -i/var/run/smsd.working -l/var/log/smsd.log
12007 ?        S      0:00 /usr/local/bin/smsd -n GSM1_______ -p/var/run/smsd.pid -i/var/run/smsd.working -l/var/log/smsd.log
12050 pts/1    S+     0:00 grep sms

[root@mng smstools3]# sendsms "7965XXXXXXX" "TESTER"
--
Text: TESTER
To: 7965XXXXXXX

[root@mng smstools3]# tail -f /var/log/smsd.log
2013-06-25 11:21:59,7, GSM1: Command is sent, waiting for the answer
2013-06-25 11:21:59,7, GSM1: <- OK
2013-06-25 11:22:00,7, GSM1: -> AT+CMGS=42
2013-06-25 11:22:00,7, GSM1: Command is sent, waiting for the answer
2013-06-25 11:22:00,7, GSM1: <- >
2013-06-25 11:22:00,7, GSM1: -> 0011000B919756107494F80008FF1C004600750063006B00200079006F00750020043D0438043304350440
2013-06-25 11:22:00,7, GSM1: Command is sent, waiting for the answer
2013-06-25 11:22:04,7, GSM1: <- +CMGS: 7 OK
2013-06-25 11:22:04,5, GSM1: SMS sent, Message_id: 7, To: 7965XXXXXX, sending time 8 sec.
2013-06-25 11:22:04,6, GSM1: Moved file /var/spool/sms/checked/send_d704Fu to /var/spool/sms/sent/send_d704Fu

Шлюз email2sms

#!/usr/bin/perl

# Copyright(C) Victor Vislobokov, 2011
# Under GNU GPL 2 License

use DB_File;
use Net::POP3;

# имя и пароль для доступа к почтовому ящику
$username = "username";
$password = "password";
# POP3 сервер
$server = "pop.yandex.ru";
# номер сотового куда отправлять SMS
$num = 'XXXXXXXXXX';
# База данных для хранения идентификаторов писем
$db_file = "/var/tmp/sms/id.db";
# Файл журнала для протоколирования действий
$logfile = "/var/tmp/sms/emailtosms.log";

$pop = Net::POP3->new($server, Timeout => 60);
$rc = $pop->login($username, $password);
if ($rc > 0) {
  # Открываем БД сохранённых сообщений
  $DB = tie(%hash_id, "DB_File", $db_file);

  # Получаем список сообщений
  $msgnums = $pop->list;
  foreach my $msgnum (keys %$msgnums) {

    # Получаем уникальный ID сообщения
    $uid = $pop->uidl($msgnum);

    # Отмечаем это сообщение в хеше текущих в данной сессии
    $msgs{$uid} = 1;

    # Проверяем не было ли уже обработано данное сообщение
    # Если обработано, идём дальше
    if (defined $hash_id{$uid}) {
      writeLog($logfile, "$uid already processed");
      next;
    }

    # Если нет, обрабатываем
    $hash_id{$uid} = 1;

    $msg = $pop->get($msgnum);
    foreach $line (@$msg) {
      if (index($line, "Subject: ") == 0) {
        $sms = substr($line, 9, 50);
        chomp($sms);
        $stamp = getCurrentDateTime();
        writeLog($logfile, "SMS '$sms' sended");
        system("/usr/local/bin/sendsms \"$num\" \"$stamp $sms\"");
      }
    }
#    $pop->delete($msgnum);
  }
} elsif ($rc == 0) {
  writeLog($logfile, "No messages in mailbox");
} else {
  writeLog($logfile, "Login failed");
}

$pop->quit;

# Удаляем из базы старые ID
foreach $uid (keys %hash_id) {
  # Если ID из базы есть в текущей сессии, оставляем
  next if (defined $msgs{$uid});
  DB_File::DELETE($DB, $uid);
  writeLog($logfile, "$uid was been deleted");
}
untie(%hash_id);

# ----------------------------------------------------------------------------
# Получение текущей даты и времени
# ----------------------------------------------------------------------------
sub getCurrentDateTime {
  my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time());
  $mon++;
  $year=$year-100+2000;
  return(sprintf("%.4d-%.2d-%.2d %.2d:%.2d:%.2d", $year, $mon, $mday, $hour, $min, $sec));
}

# ----------------------------------------------------------------------------
# Запись в лог
# ----------------------------------------------------------------------------
sub writeLog {
  my ($logfile, $msg) = @_;

  if (!defined $logfile) {
    $logfile = "/dev/null";
  }

  my ($datetime, $fd, $rc);
  $datetime = getCurrentDateTime();

  $rc = open($fd, ">>$logfile");
  if (!defined $rc) {
    if ($main::config{'DEBUG'} > 0) {
      # При невозможности вывода в файл, выводим на стандартный ввод
      print "$msg\n";
    }
  } else {
    print($fd "$datetime ");
    print($fd "$msg");
    print($fd "\n");
    close($fd);
  }
}
[root@mng /]# chmod 755 email2sms.pl

[root@mng sms]# crontab -l
*/3 * * * * /email2sms.pl



Статья помогла? поддержите проект!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Time limit is exhausted. Please reload the CAPTCHA.