Jump to content
  • 0

Получить статистику роутера


ganzales

Question

Привет, пытаюсь подключиться к API статистики http://192.168.1.1/ci , но keenetic не отдает данные:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://192.168.1.1/ci');
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/xml'));
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
curl_setopt($ch, CURLOPT_USERPWD, 'admin:password');
$result = curl_exec($ch);

Авторизация проходит, но постоянно появляются какие-то ошибки, сейчас имею такое:

Цитата
HTTP/1.0 401 Unauthorized
  Server: Ag [47]
  WWW-Authenticate: Digest realm="ZyXEL Keenetic Giga", qop="auth", nonce="1c3086", algorithm=MD5
  Content-type: text/html
   
  HTTP/1.0 413 The request is too long
  Server: Ag [47]
  Set-Cookie: _authorized=admin; path=/
  Content-type: text/html

мне кажется какая-то проблема с тем, что нужно формировать POST запрос, но в чем именно не могу разобраться. В чем проблема?

Link to comment
Share on other sites

21 answers to this question

Recommended Posts

  • 1
В 24.08.2017 в 22:55, vitgan сказал:

Как вы это сделали и реализовали??? Умоляю, помогите мне сделать тоже самое на 4G III

Класс!

Можно собирать данные и отправлять в такой дашборд grafana.com

Удобнее всего запускать всё через docker-compose. Я пока сам ещё разбираюсь, система очень гибкая. Графики, плагины, можно делиться дашбордами))
Это целый стэк: сбор данных Telegraf + база данных InfluxDB + дашборды Grafana.

Сейчас, Telegraf из коробки не поддерживает сбор данных из XML. В Issues #1758 уже обсуждают добавление плагина. Вообще очень динамично развивается утилита. В принципе, отсутствие нужного плагина решается временным костылём с помощью любого своего скрипта завёрнутого в плагин exec.

Скрытый текст

image

 

Edited by Дмитрий Дубинин
опечатки
Link to comment
Share on other sites

  • 0

Мне кажется проходит, потому что если указать другие данные авторизации, тогда будет

HTTP/1.0 401 Unauthorized
Server: Ag [47]
WWW-Authenticate: Digest realm="ZyXEL Keenetic Giga", qop="auth", nonce="1c3608", algorithm=MD5
Content-type: text/html

HTTP/1.0 401 Unauthorized
Server: Ag [47]
WWW-Authenticate: Digest realm="ZyXEL Keenetic Giga", qop="auth", nonce="1c3608", algorithm=MD5
Content-type: text/html

причем, в первом случает первый заголовок такой же 

  HTTP/1.0 401 Unauthorized
Link to comment
Share on other sites

  • 0
В 05.08.2017 в 21:14, Le ecureuil сказал:

Скиньте пример тела POST-запроса, там должен быть валидный XML.

Плюс это не API статистики, а универсальное API. Какую именно команду вы шлете?

упс, я вообще никакие команды не слал, с горем пополам разобрался, убив 5 часов!

вот рабочий код, может кому-то пригодится

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://192.168.1.1/ci');
curl_setopt($ch, CURLOPT_POSTFIELDS, '<request id="0"><command name="show dyndns"><profile>_WEBADMIN</profile><name>ISP</name></command></request><request id="1"><command name="show interface stat"><name>ISP</name></command></request>');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/xml'));
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
curl_setopt($ch, CURLOPT_USERPWD, 'admin:pasword');
curl_exec($ch);

 

Link to comment
Share on other sites

  • 0
16 часов назад, ganzales сказал:

вот рабочий код, может кому-то пригодится

А как это выглядит на выходе, можете показать?

Link to comment
Share on other sites

  • 0

 

В 08.08.2017 в 17:00, vitgan сказал:

А как это выглядит на выходе, можете показать?

на выходе XML

<packet>
    <response id="0">
        <dyndns>
            <type>dyndns</type>
            <profile>_WEBADMIN</profile>
            <status>success</status>
            <domain>xxx.dyndns.org</domain>
            <message>Updated sucessfully</message>
            <interface>ISP</interface>
        </dyndns>
    </response>
    <response id="1">
        <rxpackets>124688054</rxpackets>
        <rxbytes>151749098416</rxbytes>
        <rxerrors>0</rxerrors>
        <rxdropped>0</rxdropped>
        <txpackets>60460877</txpackets>
        <txbytes>17194898109</txbytes>
        <txerrors>0</txerrors>
        <txdropped>0</txdropped>
    </response>
</packet>
В 08.08.2017 в 12:44, Le ecureuil сказал:

@ganzales а почему было сразу не спросить здесь у разработчиков?

По началу показалось просто, а получилось как всегда. Планирую написать статистику по использованию канала. Как понимаю, это API используется для внутренних целей, кстати, у него есть документация? Тут все понятно - можно получить определенные данные, в принципе таким же макаром можно и управляющие команды посылать, но сейчас задумался, а может есть полноценное API для управления роутером?

Edited by ganzales
Link to comment
Share on other sites

  • 0

Это и есть полноценное API для управления роутером.

Все команды CLI и в Web преобразуются в XML  и в таком виде отправляются в роутер для обработки. Результат тоже приходит в XML.

Узнать все API можно посмотрев cli guide - там у каждой команды есть XML-представление (хоть оно и не описано, но можно попробовать восстановить).

Link to comment
Share on other sites

  • 0
4 часа назад, utya сказал:

ftp://ftp.zyxel.com/USG40/cli_reference_guide/USG40_1.pdf
это можно считать cli guide?

И еcли можно,приведите пример одно команды на bash

USG вообще никаким боком не относится к Keenetic.

Ровно как и bash.

Правильные cli guide вот:

http://files.keenopt.ru/cli_manual/

В особенности прочтите главу 4 HTTP Core Interface.

Link to comment
Share on other sites

  • 0

Выше был пример на php, но я хочу сделать на linux отправку rest api запросов с помощью curl вот и спросил про bash.

Спасибо за ссылку

Edited by utya
Link to comment
Share on other sites

  • 0

С версии 2.08 есть Rest API интерфейс, скоро добавим его описание в документацию. Как он работает, можно посмотреть через консоль браузера. Обращения идут не через /ci, а через /rci. Если не разберётесь, спрашивайте.

Впрочем, /ci пока тоже не планируем отключать.

  • Upvote 2
Link to comment
Share on other sites

  • 0

Спешу поделиться своим разочарованием. Только, казалось бы, я дописал свою статистику, как заметил некоторую странность. Как мне показалось, трафик считается не правильно. Искал проблему у себя, пока не решил замерить показания счетчика роутера и вот что могу сказать. Ну во-первых "[rxbytes] => 179473229879", это не "Принято:179.47 Гбайт", разница как бы  существенная с 167.14. Во-вторых показания совершенно не совпадают с реальностью, пробовал загружать 500Мб по ftp, результат - 70142 байт, скачивание - 127196, скорость в админке соответствующая, что-то вроде 0.51 кбит/c, хотя в реале 4Мбит, очень жаль, или я что-то делаю не так?

Edited by ganzales
Link to comment
Share on other sites

  • 0
23 часа назад, ganzales сказал:

Спешу поделиться своим разочарованием. Только, казалось бы, я дописал свою статистику, как заметил некоторую странность. Как мне показалось, трафик считается не правильно. Искал проблему у себя, пока не решил замерить показания счетчика роутера и вот что могу сказать. Ну во-первых "[rxbytes] => 179473229879", это не "Принято:179.47 Гбайт", разница как бы  существенная с 167.14. Во-вторых показания совершенно не совпадают с реальностью, пробовал загружать 500Мб по ftp, результат - 70142 байт, скачивание - 127196, скорость в админке соответствующая, что-то вроде 0.51 кбит/c, хотя в реале 4Мбит, очень жаль, или я что-то делаю не так?

Устройство неподдерживаемое, потому даже разбираться лень. Скорее всего так и придется жить с этим.

В 2.09 для всех поддерживаемых в любом виде устройств были выверены все счетчики, там должно считать правильно.

Link to comment
Share on other sites

  • 0
10 минут назад, Le ecureuil сказал:

Устройство неподдерживаемое, потому даже разбираться лень. Скорее всего так и придется жить с этим.

В 2.09 для всех поддерживаемых в любом виде устройств были выверены все счетчики, там должно считать правильно.

Ну это понятно, буду с этим жить)) благо я планирую покупку нового Ultra или Giga, единственное осталось дождаться выхода, как раз 2 года прошло.

Link to comment
Share on other sites

  • 0
31 минуту назад, ganzales сказал:

мега статистика

Как вы это сделали и реализовали??? Умоляю, помогите мне сделать тоже самое на 4G III

Класс!

Link to comment
Share on other sites

  • 0

vitgan, спасибо за оценку!

Сорри, опенсорс решения, к сожаления, у меня нет - все на коленке, по-домашнему :D  В качестве сервера у меня выступает андроид телефон 2011 года)) - удивительно утилитарная железка, кинетик, кстати, такой же. Вообще это же самое можно и на самом роутере осуществить, когда сидел на прошивке 1.00 у меня был поднят вебсервер, но при прошивке на 2 версию, естественно все отвалилось. Каждый раз разбираться в этом - времени нет, поэтому появилась идея поднять все на старом телефоне один раз и забыть - всегда хотел себе иметь мини-сервер, так на телефоне это еще и автономность, резервный канал, СМС и прочее, короче много плюшек, и как выяснилось настраивается достаточно просто + производительно на порядок выше. Ой, что-то меня занесло. Ну а что касается статистики, тот тут ничего особо сложного нет, разве что нужно определенными навыками обладать - немного оттуда, немного отсюда)) В общем и целом, я снимаю ежеминутно показания со счетчиков роутера через php curl запросом с авторизацией (код выше приводил), произвожу расчеты и храню данные в mysql, графики уже строю js-ом, вкратце так, если что-то конкретно интересует могу подробнее расписать.

вот еще парочка примеров мониторинга на моем могучем сервере, тут, например, видно что китайская камера опять зависла

Скрытый текст

wnT0edoaT2uNfUsGcINZ2Q.png

а вот статистика использования ноутбука

Скрытый текст

77cUMmj8TuaEQTa25f5naQ.png

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...