пятница, 12 сентября 2014 г.

Скрипт на PYTHON для отправки СМС через GSM шлюз ADDPACK AP-GS1002B

     Сегодня поделюсь своим скриптом на PYTHON для отправки СМС сообщений через двухканальный GSM шлюз ADDPACK AP-GS1002B. Данный шлюз имеет порт LAN RJ-45 и позволяет подключаться к нему TELNET -ом и отправлять СМС -ки через любой канал GSM.  Скрипт писался мной для отправки СМС -ок серверами при возникновении определенных событий.





     В скрипт должны передаваться 3 обязательных параметра:
1) Номер канала, через который отправлять СМС ( В данном устройстве это значение может быть 0 или 1)
2) Номер телефона, на который отправлять СМС ( сплошной строкой без пробелов и дефисов)
3) Сам текст СМС -ки (параметр необходимо заключать в кавычки для отправки СМС-ок из нескольких слов, иначе будет отправляться только первое слово. Текст не должен превышать максимальную длину сообщения ).

Параметры, передаваемые в скрипт не проверяются на валидность, поэтому сами следите за тем, что передаете в этот скрипт.

Для использования скрипта, необходимо отредактировать в нем переменные:
HOST - IP адрес нашего GSM шлюза в сети ( в моем случае 192.168.10.1 )
USER - пользователь, по умолчанию 'root'
PASSWORD - пароль (дефолтный пароль для AP-GS1002B  'router' )

Пример использования скрипта:
python send_sms_apgs1002b.py 1 "0917777777" "Test test"
python send_sms_apgs1002b.py 0 "+380917777777" "Test test"

Сам скрипт send_sms_apgs1002b.py
#!/usr/bin/python

#-------------------------------------------------
# -*- coding: utf-8 -*-
# Telnet Client for GSM gate ADDPACK AP-GS1002B
# Script for sending SMS
# Written by Scorp 2013
#-------------------------------------------------
# usage: send_sms_apgs1002b.py "GSM_CHANNEL" "PHONE_NUMBER" "SMS_TEXT"

import getpass
import sys
import telnetlib
import os
import string
import argparse
#-----------------------------------------------------
HOST = "192.168.10.1"
PORT = "23"
USER = "root"
PASSWORD = "router"
# ----------------------------------------------------
parser = argparse.ArgumentParser()

parser.add_argument("GSM_CHANNEL", help="GSM channel in this device must be 0 or 1")
parser.add_argument("PHONE_NUMBER", help="Telephone number for sending SMS")
parser.add_argument("SMS_TEXT", help="Text that you want to send in SMS ")
args = parser.parse_args()


print "=========================================="
print " Phone Number", args.PHONE_NUMBER
print " SMS Text    ", args.SMS_TEXT
print "=========================================="
print " Telnet to host", HOST, PORT
print

TNT = telnetlib.Telnet(HOST, PORT, 10)

PROMPT = "Login: "
RESPONSE = TNT.read_until(PROMPT, 5)
if string.count(RESPONSE, PROMPT):
            print " Connected"
else:
            print "=================="
            print " ERROR LOGIN STRING"
            print RESPONSE

print "=========================================="
print " Entering User Name ", USER
TNT.write(USER + "\r")

PROMPT = "Password:"
RESPONSE = TNT.read_until(PROMPT, 5)
if string.count(RESPONSE, PROMPT):
            print " OK"
            print "=========================================="
else:
            print "=================="
            print "ERROR PASSWORD STRING"
            print RESPONSE

print " Entering Password "
TNT.write(PASSWORD + "\r")

PROMPT = "GS1002>"
RESPONSE = TNT.read_until(PROMPT, 5)
if string.count(RESPONSE, PROMPT):
            print " OK"
            print "=========================================="
else:
            print "=================="
            print "ERROR ENTERING"
            print RESPONSE
print " Entering to EN"
TNT.write("en\r")
PROMPT = "GS1002#"
RESPONSE = TNT.read_until(PROMPT, 5)
if string.count(RESPONSE, PROMPT):
            print " OK"
            print "=========================================="
else:
            print "=================="
            print "ERROR ENTERING EN"
            print RESPONSE

print " Entering to CONFIG"
TNT.write("conf term\r")

PROMPT = "GS1002(config)#"
RESPONSE = TNT.read_until(PROMPT, 5)
if string.count(RESPONSE, PROMPT):
            print " OK"
            print "=========================================="
else:
            print "=================="
            print "ERROR ENTERING CONFIG"
            print RESPONSE

print " Cleaning memory of device..."
print " On port 0 1"
TNT.write("mobile 0 1 sms message del all\r")   # deleting all sms on sim 0 1
TNT.read_until(PROMPT, 15)
print " On port 0 0"
TNT.write("mobile 0 0 sms message del all\r")   # deleting all sms on sim 0 0
TNT.read_until(PROMPT, 15)
print " OK"
print "=========================================="

print " Sending SMS ..."
LINETOSEND = "mobile 0 " + args.GSM_CHANNEL + " sms message send " + args.PHONE_NUMBER + " " + args.SMS_TEXT
print " String: ", LINETOSEND
TNT.write(LINETOSEND + "\r")

PROMPT = "GS1002(config)#"
RESPONSE = TNT.read_until(PROMPT, 15)
print
print "=========================================="
print RESPONSE
print "=========================================="

TNT.write("exit\r")
TNT.write("exit\r")
TNT.write("exit\r")
TNT.close()

Комментариев нет:

Отправить комментарий