Сегодня поделюсь своим скриптом на 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' )
Пример использования скрипта:
Сам скрипт send_sms_apgs1002b.py
В скрипт должны передаваться 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"
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()
#-------------------------------------------------
# -*- 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
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 RESPONSE
print "=========================================="
TNT.write("exit\r")
TNT.write("exit\r")
TNT.write("exit\r")
TNT.close()
Комментариев нет:
Отправить комментарий