Cкрипт определения провайдера сотовой связи
Привожу BASH-скрипт получения оператора номера сотового
(используется сервис http://rosreestr.subnets.ru).
Показать
Допустим, мы хотим получить информацию о мобильном номере +7 900 555-55-50 (или 8 900 555-55-50)... При выполнении команды
curl -s "http://rosreestr.subnets.ru/?get=num&format=xml&num=9005555550" | sed -e 's/<[^>]*>//gm' | sed '/^$/d' | tr -d '\t'
получим в консоли вывод
900 260823 5555550 5555550 1 ООО "СИМ ТЕЛЕКОМ" 5418 Москва и Московская область 1880
где:
900 — DEF-код (мобильные номера всегда начинаются с цифры 9)
260823 — ID диапазона номеров с данным DEF-кодом в реестре Российской системы и плана нумерации
5555550 — начальный номер диапазона номеров
5555550 — конечный номер диапазона номеров
1 — Общая номерная ёмкость в данном диапазоне
ООО "СИМ ТЕЛЕКОМ" — наименование оператора, обслуживающего мобильный номер
5418 — ID оператора
Москва и Московская область — наименование региона, в котором оператор обслуживает мобильный номер
1880 — ID региона в реестре Российской системы и плана нумерации
Разоблачение фокуса...
Командой
curl -s "http://rosreestr.subnets.ru/?get=num&format=xml&num=9005555550"
в вывод консоли сервис возвращает ответ в формате XML:
<?xml version="1.0" encoding="utf-8"?> <response> <row> <code>900</code> <codeID>260823</codeID> <from>5555550</from> <to>5555550</to> <capacity>1</capacity> <operator>ООО "СИМ ТЕЛЕКОМ"</operator> <operatorID>5418</operatorID> <region>Москва и Московская область</region> <regionID>1880</regionID> </row></response>
Команда
sed -e 's/<[^>]*>//gm'
по конвейеру убирает все подстроки, заключённые в угловые скобки < ... >
900 260823 5555550 5555550 1 ООО "СИМ ТЕЛЕКОМ" 5418 Москва и Московская область 1880
Затем с помощью команды
sed '/^$/d'
удаляются пустые сроки, оставшиеся после удаления <тегов>:
900 260823 5555550 5555550 1 ООО 'СИМ ТЕЛЕКОМ' 5418 Москва и Московская область 1880
а команда
tr -d '\t'
убирает символы табуляции в получившемся выводе
900 260823 5555550 5555550 1 ООО 'СИМ ТЕЛЕКОМ' 5418 Москва и Московская область 1880
N. B.: Скрипту нужен установленный пакет curl, можно заменить wget’ом:
wget -q -O - "http://rosreestr.subnets.ru/?get=num&format=xml&num=9005555550" | sed -e 's/<[^>]*>//gm' | sed '/^$/d' | tr -d '\t'
N. B.: В принципе, можно получать вывод не в формате XML, при опускании в урле параметра
&format=xml
сервис выдаёт plain text.
В планах написать веб-версию, использующую данный сервис.
Слизано с Хабра.