Jump to content

Как получить UNIX имя интерфейса из REST API роутера?


Recommended Posts

Здраствуйте! Разрабатываю демона по типу kvas и хочу в модальном окне выбора интерфейса выводить вместо какого-нибудь UNIX'ового названия "nwg0" или же "ovpn_br0" выводить человеко-читаемое название интерфейса по типу "WireGuard [Home] (nwg0)".

К сожалению из запроса `GET http://192.168.1.1/rci/show/interface/Wireguard1` имею лишь такую структуру, где нет ни слова о UNIX'овом названии интерфейса:

{
    "id": "Wireguard1",
    "index": 1,
    "interface-name": "Wireguard1",
    "type": "Wireguard",
    "description": "Home",
    "traits": [
        "Ip",
        "Ip6",
        "Wireguard"
    ],
    "link": "down",
    "connected": "no",
    "state": "down",
    "mtu": 1324,
    "tx-queue-length": 50,
    "global": false,
    "security-level": "public",
    "ipv6": {},
    "wireguard": {},
    "summary": {
        "layer": {
            "conf": "disabled",
            "link": "disabled",
            "ipv4": "disabled",
            "ipv6": "disabled",
            "ctrl": "disabled"
        }
    }
}

Видел, что kvas решает эту проблему использованием хука iflayerchanged и перезапуском всех интерфейсов, что считаю это решение не очень то и хорошим, ибо подобная информация как по мне должна быть как и в CLI Keenetic (Telnet), так и в REST API (а по возможности, кстати, хотелось бы иметь документацию по REST API, ибо её нигде не нашел).

Где можно достать UNIX имя интерфейса без использования подобных костылей (из-за текущих ограничений Keenetic'а)?

Edited by Ponywka
  • Upvote 1
Link to comment
Share on other sites

Цитата

CLI Keenetic (Telnet), так и в REST API (а по возможности, кстати, хотелось бы иметь документацию по REST API, ибо её нигде не нашел).

На самом деле совершенно не очевидно, потому что без установки opkg системное имя никому и нигде не может потребоваться - его просто нет в командах и выводе. Именно потому его там и нет.

Мы подумаем, что можно сделать.

  • Upvote 3
Link to comment
Share on other sites

1 минуту назад, Le ecureuil сказал:

На самом деле совершенно не очевидно, потому что без установки opkg системное имя никому и нигде не может потребоваться - его просто нет в командах и выводе. Именно потому его там и нет.

Мы подумаем, что можно сделать.

В параллельной теме тоже спрашивал об этом. Ждем решения....

Link to comment
Share on other sites

8 hours ago, Le ecureuil said:

На самом деле совершенно не очевидно, потому что без установки opkg системное имя никому и нигде не может потребоваться - его просто нет в командах и выводе.

Хм... Ну с этой точки зрения конечно верно... Просто хотелось бы, если не иметь возможность встраивать какие-то настройки во внутрь самой веб-морды Keenetic, то хотя-бы иметь возможность дёргать с самого Keenetic какие-то данные (например тот же человеко-читаемое название интерфейса, добавленное из интерфейса самого Keenetic) и рисовать уже свой интерфейс на каком-то порту (что я и хочу сделать)

Перезапускать все интерфейсы я ну очень не хочу, ибо это долгий процесс. В таком случае уж лучше просто вывести UNIX'овое имя интерфейса, а пользователь пускай сам разбирается.

 

Вообще та штука, которую я хочу сделать реализовывается и через CLI Keenetic'а, однако это засрёт таблицу маршрутов на самом роутере, чего я делать тоже не очень хочу, ибо отслеживать изменения оттуда ещё сложнее, породит ещё больше костылей, а также будет медленно выполняться. iptables+ipset как-то быстрее с этой задачей справятся.

Link to comment
Share on other sites

39 minutes ago, Le ecureuil said:

Человекочитаемое имя лежит в поле description в выводе show interface.

Я имел ввиду про софт, который я пишу, который использует iptables и работает с UNIX'овыми названиями интерфейсов, но который запущен на роутерах Keenetic.

Link to comment
Share on other sites

51 минуту назад, Ponywka сказал:

Я имел ввиду про софт, который я пишу, который использует iptables и работает с UNIX'овыми названиями интерфейсов, но который запущен на роутерах Keenetic.

можно брать адреса  интерфейсов через  ip address и сравнивать с теми что вам покажет ndmc -c show interface, по этому признаку и выяснять кто есть кто

Edited by Denis P
  • Upvote 1
Link to comment
Share on other sites

53 minutes ago, Denis P said:

можно брать адреса  интерфейсов через  ip address и сравнивать с теми что вам покажет ndmc -c show interface

Ну, как вариант кстати 😕

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
Reply to this topic...

×   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...