LinuxForum.Fans
Тема

Отправка смс с командной строки

Автор: Vadimsky 32 сообщений 11919 просмотров
#124332

Увидел тут у занкомого програмину на виндовом компе, он в неё забил номер абонента и текст смс, нажал "отправить", смс ушло. И дошло! отправлял мне smile
А к его компу небыло подключено никакого мобильника. Только Интернет.
Решил озадачится этим делом и прикрутить себе на сервер похожую тузлу. Потому как емайл то отправляется, но я не всегда перед компом, что бы прочесть, а мобильник всегда со мной, и если что то с сервером ни так, он мне сигнализирует.
Вообщем спрашивал у дяди Гугла, и он мне выдал кучу интересных ответов, но большинство из них требуют подключения маломальски но мобильника к серваку.
Те же которые могут работать без мобилы уже давно не поддерживаются.
Что по этому поводу думает сообщество? может у кого есть что то на примете? Главное что бы с консоли (графики нету на серваке) и без мобилы, так как я не смогу объяснить шефу, а тем более бухгалтерии, нафига в серверной сотовый. oO

#124383

майл агент может отправлять

#124407

к примеру вот
а по большому счету никто не мешает писать AT команды прямо в устройство...

#124454
odin написал:
к примеру вот
а по большому счету никто не мешает писать AT команды прямо в устройство...

Ды нет же, это как раз не без мобильника.
Не сочтите за рекламу уж, но сам пользуюсь Вот
Там довольно много всяких способов отправки. Можно, например, мылом отправлять. И при должной прямоте рук не составит труда написать скрипт, юзающий, скажем, sendmail.

#124505
Vadimsky написал:
Решил озадачится этим делом и прикрутить себе на сервер похожую тузлу.

всё очень просто: отправляете мыло в консоли (умеете? man mail вам в помощь) на специальный адрес, который выделил ОпСоС. Этот адрес называется "маилгейт", и для каждого опсоса свой (мало того, мегафон-питер отличается от мегафон-москва). Некоторые опсосы (например теле2-питер) вообще не имеют маилгейта, и отправить туда смс невозможно (только через веб-форму, а она с капчей).

#124507
bobr написал:
написать скрипт, юзающий, скажем, sendmail.

:O
это не из пушки по воробьям, а уничтожение тараканов водородной бомбой :lol:
там весь "скрипт":
[console]echo "test" | mail -s'Subj' user@example.org[/console]

#124536
drBatty написал:
это не из пушки по воробьям, а уничтожение тараканов водородной бомбой laugh

:D

#125274
Leviafan написал:
майл агент может отправлять

Не пйдёт. Нету графики на сервере, и нету человека, что бы вбивал в агент тексты. Нужно что бы брало из файла, с консоли вообщем.
odin Читал это, но gnokii и ей подобные не катят, так как без мобильника нужно.

drBatty написал:
отправляете мыло в консоли (умеете? man mail вам в помощь

ВРоде не жаловался, говорю же что на данный момент майлы с сервера о событиях приходят. Если есть возможность и смс так организовать, то было бы здорово. Просо добавить ещё 1 адрес получателя и всё. Только вот вопрос как найти такой гейт? У меня как раз Теле2, правда тульский. На их сайте ничего про это нету, в техподдержке девочки не знают, а с матёрыми спецами не соединяют так как у меня не существенный вопрос...
:(
А вот на чём организована отправка смс у websms.ru? Они же наверняка не руками со своих мобильников шлют!
vilSK по первой ссылке скачал тарбол, щас разбирать буду, а на форуме все ссылки бытые уже.
А сам я вот что сегодня нашёл: http://www.linux.org.ru/forum/talks/4890455
Похоже на то, что мне нужно, только вот рабочая неделя кончилась... :D
В любом случае спасибо всем откликнувшимся, я ещё отпишусь о результатах, может ещё кому пригодится.

#125426
Vadimsky написал:
то было бы здорово. Просо добавить ещё 1 адрес получателя и всё. Только вот вопрос как найти такой гейт? У меня как раз Теле2, правда тульский. На их сайте ничего про это нету, в техподдержке девочки не знают, а с матёрыми спецами не соединяют так как у меня не существенный вопрос...

упомянутый "койот" у вас работает?
а адреса можно нагуглить...

Vadimsky написал:
А вот на чём организована отправка смс у websms.ru?

вообще-то ещё существуют платные службы доставки СМС.

#125931

Кайот у меня работает. Но моей домашней машине. Но он графический. На серваке графики нету, поэтому его отложил в сторонку до лучших времён.
Платные службы туда же.
Сейчас вот бъюсь с гуловским календарём. Всё предельно просто и смс-ки отправляются. Но только пока с календаря гугла wink
С машины не уходят исчо. На гугле выложен скрипт как отправлять с машины на календарь, но как оказалось, этому скрипту нужны дополнительные модули, кои приходится самому искать и самому ставить. Вот сижу ищу.
Если всё прокатит, то выложу мануал пошаговый.

#126139
Vadimsky написал:
На гугле выложен скрипт как отправлять с машины на календарь, но как оказалось, этому скрипту нужны дополнительные модули, кои приходится самому искать и самому ставить. Вот сижу ищу.

а почему нельзя в гугло-календарь отправлять по гугло-почте уведомления, которые вызовут отправку СМС?

#126202

Ну этого я не знаю. Видимо в гуле ребята тоже не дураки сидят ;)
А так это первое что я попробовал.

#126264
Vadimsky написал:
А так это первое что я попробовал.

дык ПОЧЕМУ? (у меня экран разбился, мне мобилу там не зарегить, код не прочитать...)

#126279
Vadimsky написал:
Главное что бы с консоли (графики нету на серваке) и без мобилы, так как я не смогу объяснить шефу, а тем более бухгалтерии, нафига в серверной сотовый. oO

Будь здоров - не кашляй! :)

Показать
[console]
#!/usr/bin/env python
# coding=utf-8
'''
sms_mrim_client.py
author: townsman
site: http://lug.ru/node/430/
http://agent.mail.ru/ru/help/3/2.html - поддерживаемые операторы
re-author
'''
import socket, string, sys
from struct import *
'''
Конфигурационные данные
'''
LOGIN = '' # e-mail
PASSWORD = '' # пароль
NUMBER = '' # номер телефона
TEXT = "" # текст сообщения
'''
The End of config
'''
PROTO_VERSION = 0x10008 # версия протокола
CS_MAGIC = 0xDEADBEEF # тип магическая хрень (начало заголовка пакета)
MRIM_CS_HELLO = 0x1001 # приветсвуем сервер
MRIM_CS_HELLO_ACK = 0x1002 # получаем ответный привет
MRIM_CS_LOGIN2 = 0x1038 # пытаемся залогиниться
MRIM_CS_LOGIN_ACK = 0x1004 # ответ в случае успешной авторизации
MRIM_CS_SMS = 0x1039 # шлём СМСку
MRIM_CS_SMS_ACK = 0x33A # читаем статус СМСки
MRIM_CS_STATUS_ONLINE = 0x00000001 # логинимся со статусом On-line

# получаем адрес куда будет конектиться
def get_host_port():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('mrim.mail.ru', 2042))
s.send("GET / HTTP 1.1\r\n\r\n")
data = s.recv(128)
s.close()
return data
# ф-ция по созданию пакета приветствия
def packet_make(msg, seq=1, mydata=''):
formt = '<5L'
dlen = len(mydata)
my_header = pack(formt, CS_MAGIC, PROTO_VERSION, seq, msg, dlen) + pack('<L', 0)*6
return my_header

# ф-ция авторизации
def mrim_login(login=LOGIN, password=PASSWORD, client='pymra 0.1beta'):
formt = '<5L'
mydata = pack('<L', len(login)) + login + pack('<L', len(password)) + password + pack('<L', MRIM_CS_STATUS_ONLINE) + pack('<L', len(client)) + client + pack('<L', 0)*5
dlen = len(mydata)
my_header_login = pack(formt, CS_MAGIC, PROTO_VERSION, 2, MRIM_CS_LOGIN2, dlen) + pack('<L', 0)*6 + mydata
return my_header_login

# ф-ция отправки SMS
def sms_send(number=NUMBER, text=TEXT):
formt = '<5L'
mydata = pack('<L', 0) + pack('<L', len(number)) + number + pack('<L', len(text)) + text
dlen = len(mydata)
my_header_sms = pack(formt, CS_MAGIC, PROTO_VERSION, 3, MRIM_CS_SMS, dlen) + pack('<L', 0)*6 + mydata
return my_header_sms

def main():
host_port = get_host_port().split(':')
my_header = packet_make(MRIM_CS_HELLO, 1)
my_header_login = mrim_login()
my_header_sms = sms_send()
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host_port[0], int(host_port[1])))
s.send(my_header)
data = s.recv(48)
resp = unpack('12L', data)
if resp[3] == MRIM_CS_HELLO_ACK:
print "[+] Подключились!"
else:
print "[!] Не подключились!"
sys.exit(0)
s.send(my_header_login)
data_l = s.recv(48)
resp_l = unpack('12L', data_l)
if resp_l[3] == MRIM_CS_LOGIN_ACK:
print "[+] Залогинились!"
else:
print "[!] Проверьте логин и пароль!"
sys.exit(0)
s.send(my_header_sms)
data_s = s.recv(48)
resp_s = unpack('12L', data_s)
if resp_s[3] == MRIM_CS_SMS_ACK:
print "[+] SMS отправили!"
else:
print "[!] SMS не отправили :("
sys.exit(0)
s.close()

if __name__ == "__main__":
main()

[/console]
#126363

townsman Спасибо, друг!
Завтра на работе обязательно опробую!
блин, аж на работу захотелось!!!!!

#126612
Vadimsky написал:
Сейчас вот бъюсь с гуловским календарём. Всё предельно просто и смс-ки отправляются. Но только пока с календаря гугла wink
С машины не уходят исчо. На гугле выложен скрипт как отправлять с машины на календарь, но как оказалось, этому скрипту нужны дополнительные модули, кои приходится самому искать и самому ставить. Вот сижу ищу.
Если всё прокатит, то выложу мануал пошаговый.

Вот наткнулся на статью в журнале "Системный администратор" №10 за 2010 год (есть в раздачах LinuxTorrent.ru) под названием "GoogleCL Доступ к сервисам из командной строки"...

#126716
Vadimsky написал:
Вот наткнулся на статью в журнале "Системный администратор" №10 за 2010 год (есть в раздачах LinuxTorrent.ru) под названием "GoogleCL Доступ к сервисам из командной строки"...

Не корректно, то ли Vadimsky предполагает что здесь собрались одни воришки, то ли он хвастается что он сам воришка

#127660

Что то не заработал у меня код любезно предоставленный townsman.

[+] Подключились!
Traceback (most recent call last):
File "/home/aramis/sms", line 97, in <module>
main()
File "/home/aramis/sms", line 80, in main
resp_l = unpack('12L', 'data_l')
struct.error: unpack requires a string argument of length 48

Вот что получилось из запуска, может я чего то не то делаю? Подскажите пожалуйста.

#127754

townsman
Спасибо за скрипт! Реально работает! Правда по рускии если писать то шлёт ересь, но не беда, мне что бы понять что с серваком и английского хватит.
Вот на счёт воришек не понял. Вы же сами скрипт привели. И потм я вовсе не надеялся что здесь собрадись воришки. Я надеялся что есть способ отправки из командной строки линукса, так как из винды есть бесплатная отправка смс, в своем первом посте я всё описал.
Кстати, вы не правильно меня процитировали в своём 18- посте. Та цитата, на которую вы ссылаетесь, была сказана не мной.
Да и вообще какая разница кем она была сказана?
У Гула тоже есть бесплатная отправка смс.
И тоже работает. Сам проверял. Хотел было сделать мануал по этой теме, но тут: http://www.linux.org.ru/forum/talks/4890455 всё подробно описано.
Единственное что могу добавить, то отсюда http://labix.org/python-dateutil нужно скачать dateutil (так как gcalcli календарь от гугла) его требует.
Затем распаковать, войти в получившуюся папку и дать команды от рута:
[console]
make
./setup.py
./test.py
[/console]
Если после последней команды побежади точки в строке, то всё собралось и поставилось, можно отправлять смс используя gcalcli
Ну gcalcli нужно соответсвенно настроить.
Тестировалось под Fedora 14, на других системах не пробовал. Если у кого заработает, или не заработает - пишите, думаю совместно доведём идею до логического совершенства!

Войдите или зарегистрируйтесь, чтобы ответить.