Молодец, что отдельно вынес! Авторам респект!
Вынес с отдельную ветку, чтобы не потерялось.
Добавлено:
- отсылка больших смс путем дробления на части и посылки каждой отдельно. Большие смс с русским текстом тоже обрабатываются;
- убран мусор, добавляемый mail.ru в конец сообщения;
- список адресов электронной почты перебирается по кругу. Ищутся те, с которых можно послать;
- создана веб-страница для отправки смс с помощью веб-интерфейса (тестировал с в связке lighttpd);
- для ускорения работы скрипта время возможной отправки смс сохраняется в файл;
- присутствует отложенная отправка;
Установка
1) Скопируйте содержимое архива sms в какую-нибудь директорию.
2) Установите Python. Для этого в шелле выполните:
3) Сделайте скрипты send.py, sendtime.py, smscron.py, smscron.sh исполняемыми.Code:ipkg update ipkg install python3
4) [Если нужна отложенная отправка]Code:chmod +x send.py chmod +x sendtime.py chmod +x smscron.py chmod +x smscron.sh
Отредактируйте smscron.sh (задайте в переменной BASEPATH путь до smscron.py без слеша в конце).
Добавьте в cron (у меня в файл /opt/etc/crontabs/admin) вызов smscron.sh:
Если вы распаковали архив в /opt/share/scripts/sms/Code:0 * * * * /opt/share/scripts/sms/smscron.sh
В начало crontab-файла добавьте
Так проверка на отправку будет производится с каждым началом часа.Code:SHELL=/bin/sh
Настройка
1) Список email-ов и паролей задается в файле store.py.
Для отправки больших смс, если задано мало email-ов, но с них еще можно отправить, скрипт висит в памяти и отправляет каждую минуту. Поэтому лучше задать штук 5-10 чтобы не было ожидания.
2) Там же в значение переменной log_filename задайте файл для лога и проверьте права на доступ к нему.
Использование
Отправка смс:
Отложенная отправка смс:Code:./send.py 7916xxxxxxx message
Первый параметр - час, когда смс может приходить; второй - когда уже смс приходить не может.Code:./sendtime.py 8 23 7916xxxxxxx message
Установка веб-интерфейса (сервер lighttpd):
1) Распакуйте содержимое архива webInterface в корень веб сервера (у меня /opt/share/www).
2) В файле sendFromWeb.py задайте переменной sender_path свой путь до директории с файлом send.py.
3) В файле конфига lighttpd (/opt/etc/lighttpd/lighttpd-ssl.conf - у меня используется ssl. Или /opt/etc/lighttpd/lighttpd.conf - если без ssl) необходимо секцию cgi модифицировать следующим образом:
По желанию можно настроить аутентификацию в том же конфиге. Вот пример моейCode:#### CGI module cgi.assign = ( ".pl" => "/opt/bin/perl", ".py" => "/opt/bin/python3", ".cgi" => "/bin/sh" )
Про аутентификацию подробнее.Code:auth.require = ( "/" => ( "method" => "digest", "realm" => "realm_can_access_to_root", "require" => "user=user_can_access_to_root" ) ) $HTTP["url"] =~ "^/rtorrent"{ auth.require = ( "/rtorrent" => ( "method" => "digest", "realm" => "rtorrent", "require" => "valid-user" ) ) } $HTTP["url"] =~ "^/sms"{ auth.require = ( "/sms" => ( "method" => "digest", "realm" => "sms", "require" => "valid-user" ) ) }
В веб-интерфейсе можно не задавать время отправки, тогда смс придет сразу же.
Не забудьте установить локаль, если не установлена (лучше в /etc/profile).
Внимание! Если вы только что зарегали ящик на mail.ru, то чтобы залогиниться через Mail.Ru Agent или этот скрипт, нужно отправить письмо кому-нибудь.Code:export LANG='ru_RU.UTF-8'
UPD (от 30.05.2010): Теперь не придется каждый раз править sender.py. E-mail'ы и пароли к ним вынесены в отдельный файл.
UPD (от 14.05.2011): В питоне 3.2 сломали logging со строкой формата '%(asctime)-18s'. Поэтому тем, что поставил python-3.2 и кому в консоль сыпятся ошибки вида: KeyError: 'asctime' на 34 строке файла sender.py замените
наCode:format = '%(asctime)-18s %(levelname)-13s %(message)s',
НЕ ТРОГАЯ отступы.Code:format = '%(asctime)s %(levelname)-13s %(message)s',
UPD (от 23.07.2011): В питоне 3.2.1-1 logging починили, не нужно править руками sender.py.
Last edited by xz_kostyan; 25-03-2012 at 00:13. Reason: Обновление архива
wl-500gP v1 (128 MB) + 1.9.2.7-rtn-3300
Молодец, что отдельно вынес! Авторам респект!
Вот что говорит
В вебмрде пишет просто "Результат"Code:File "./send.py", line 27, in <module> print(s.send_sms(phone, message)) File "/opt/etc/sms_py/sender.py", line 179, in send_sms if self.send_sms_part(phone, temp_message[:size]): File "/opt/etc/sms_py/sender.py", line 111, in send_sms_part list = agent.is_contact_list(packet) File "/opt/etc/sms_py/mrim.py", line 504, in is_contact_list client = str(self.get_bytes_from_packet(packet, dlen), 'UTF-16LE') File "/opt/lib/python3.1/encodings/utf_16_le.py", line 16, in decode return codecs.utf_16_le_decode(input, errors, True) UnicodeDecodeError: 'utf16' codec can't decode byte 0x00 in position 146: truncated data
Локаль установлена, вот:
Похоже , что только у меня такое,долго пытался разобраться, ибо нелюблю вопросы просто так задавать.Code:]$ export export HOME='/usr/local/root' export LANG='ru_RU.UTF-8' export LC_ALL='ru_RU.UTF-8' export LOGNAME='root' export PATH='/opt/sbin:/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' export PS1='[\u@\h \W]$ ' export PWD='/tmp/local/root' export SHELL='/bin/sh' export TERM='xterm' export TERMINFO='/opt/share/terminfo' export USER='root'
Видимо прикрыли лавочку! Сегодня не отправлял ни единого смс
Хм, удалил файлы mrim.рус и sender.русCode:[maxya@maxya_wi_fi root]$ /tmp/harddisk/www/sms/send.py 38068XXXXXXX проверка! Sms send error: sms limit exceeded at all emails.
и начало отправлять!
Last edited by колбаскин; 30-01-2010 at 23:09.
устройство должно решать проблема - а не создавать их!
WL-500W, WRT610N v2 + WD 250Gb 2.5" Отправка смс + шаринг на openbox x730
TwonkyMedia + dbhub_0.450 + lighttpd+ssl+auth + dlengine + NOD32 update server
Огромный респект Олегу и vectorm
johnson, вот что написано на сайте м-агента. Так что теоретически все должно быть нормально. Проверьте доставляется ли самим агентом.
wl-500gP v1 (128 MB) + 1.9.2.7-rtn-3300
а как сделать чтобы не просил логин и пароль при заходе на этот плагин?
Вы про настройку веб-сервера? Тут показано как включить аутентификацию. Соответственно выключается она комментированием строк.
wl-500gP v1 (128 MB) + 1.9.2.7-rtn-3300
после перезагрузки роутера строка пропадает
flashfs save && flashfs commit && flashfs enable && reboot
делал
где копать?
сам нашел =)
надо править
/tmp/local/root/.profile
и все так и русские буквы не шлет
Code:[admin@wl500g root]$ /opt/etc/sms_py/send.py 7987###### test Sms sent [admin@wl500g root]$ /opt/etc/sms_py/send.py 7987###### test тест Traceback (most recent call last): File "/opt/etc/sms_py/send.py", line 27, in <module> print(s.send_sms(phone, message)) File "/opt/etc/sms_py/sender.py", line 161, in send_sms is_long = len(message) != len(bytes(message, 'UTF-8')) UnicodeEncodeError: 'utf-8' codec can't encode character '\udcd1' in position 5: surrogates not allowed [admin@wl500g root]$
Last edited by karim; 07-03-2010 at 19:28. Reason: сам нашел =)
Что то у меня не выходит послать смс, номер +358466******. Или майл не шлет на забугорные операторы ?
Asus WL500g.Premium2 + FW 1.9.2.7-d-r1222 + USB HDD IDE 3.5 180GB
Для тестирования создал 3 ящика на @mail.ru - все работало (и работет) суперски!!
Захотел сделать так, чтобы мусора при отправке смс (емейл с которого идет отправка, и который указывается в отправленной смс) был бы как можно короче. Зарегистрировал несколько ящиков на @bk.ru... Было проведено несколько экспериментов, но результат один - скрипт тупо виснет... почему - я не знаю (логов по умолчанию нету, а с питоном я знаком как с английской королевой)...
Собственно вопрос - у кого отправляется с @bk.ru? (может это я один кривой) и еще вопросец из этой же серии - как заставить отправлять смс с @bk (пока буду сидеть на @mail.ru )?
PS для тех кто спросит - "нахрена тебе @bk - всего 2 символа экономии?!" - отвечаю... да всего 2 символа, но еще огромный плюс, что проще найти короткие адресе - на @bk гораздо меньше ящиков зарегано, чем на @mail.ru
У меня все прекрасно отправляется. Только что проверил.
wl-500gP v1 (128 MB) + 1.9.2.7-rtn-3300
С ящиков @bk.ru ? странно... ну тогда буду дальше экспериментировать ...
PS может я написал как то криво в предыдущем посте - с @mail.ru - работает нормально; с @bk.ru - скрипт виснет и все.
PSS небольшое уточнение - ящики на мейл.ру - 15знаков (2 последних - цифры), на бк.ру - 4 знака (2 последних - цифры)