Привожу 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.
В планах написать веб-версию, использующую данный сервис.
Слизано с Хабра.