Управление UPnP из терминала

Вопрос или проблема

Я бы хотел иметь возможность управлять маршрутизатором UPnP из терминала в Linux. Мне не важно, на каком языке написано программное обеспечение, но предпочтительнее Ruby/Python/PHP.

Не очень понятно, что вы хотите добиться. Возможно, этот список пакетов, связанных с “upnp” (Gentoo), окажется для вас полезным.

Net-UPnP
    http://search.cpan.org/dist/Net-UPnP/
    Расширение Perl для UPnP
miniupnpc
    http://miniupnp.free.fr/
    Привязки Python для библиотеки клиента UPnP
kio-upnp-ms
    https://projects.kde.org/projects/playground/base/kio-upnp-ms
    UPnP KIO slave для KDE
gupnp-dlna
    http://gupnp.org/
    Библиотека, предоставляющая функции, связанные с DLNA для MediaServers
upnpscan
    http://www.cqure.net/wp/upnpscan/
    Скрипт для сканирования сети на наличие устройств, поддерживающих UPNP
gupnp
    http://gupnp.org/
    Объектно-ориентированная структура для создания UPnP устройств и контрольных точек
gupnp-av
    http://gupnp.org/
    Небольшая вспомогательная библиотека, целью которой является облегчение работы с UPnP A/V профилями
gupnp-igd
    http://gupnp.org
    Это библиотека для обработки сопоставления портов UPnP IGD для GUPnP.
gupnp-ui
    http://gupnp.org
    Коллекция простых виджетов GTK+ поверх GUPnP.
gupnp-vala
    http://gupnp.org/
    Привязки Vala для фреймворка GUPnP
libupnp
    http://pupnp.sourceforge.net/
    Портативный открытый набор инструментов для разработки UPnP
miniupnpc
    http://miniupnp.free.fr/
    Библиотека клиента UPnP и простой клиент UPnP
autoupnp
    https://bitbucket.org/mgorny/autoupnp/
    Автоматический открытый пересылатель портов с использованием UPnP
gupnp-tools
    http://gupnp.org/
    Бесплатные замены инструментов Intel UPnP, использующие GUPnP.
miniupnpd
    http://miniupnp.free.fr/
    Дефиед MiniUPnP IGD

https://github.com/jalder/UPnP

Этот проект не поддерживался в течение некоторого времени, но это UPnP для PHP.

Из описания:

Эта библиотека направлена на то, чтобы стать удобным набором классов для управления устройствами UPnP в сети. Также могут быть включены некоторые специфические для сервисов классы для устройств, использующих UPnP/SSDP, такие как Roku (ecp, simplevideoplayer и firefox), Chromecast (castv2), XBMC. Любое устройство, которое можно обнаружить по SSDP, будет рассмотрено для включения. Если в будущем будет реализован mDNS, название пакета может быть изменено, чтобы более точно отражать его роль/назначение.

Ответ или решение

Управление UPnP-роутерами через терминал в Linux

Управление UPnP-устройствами, такими как роутеры, через терминал в Linux может показаться непростой задачей. Однако с использованием правильных инструментов и библиотек это можно сделать эффективно. В данной статье я предложу вам наиболее доступные и популярные решения на языках Ruby, Python и PHP для выполнения этой задачи.

Что такое UPnP?

UPnP (Universal Plug and Play) — это набор протоколов, который позволяет устройствам в сети автоматически находить друг друга и устанавливать подключение. Это особенно полезно для устройств, требующих настройки сетевых параметров, таких как маршрутизаторы, IPTV-терминалы и другие умные устройства.

Варианты решения проблемы

1. Python: MiniUPnPc

MiniUPnP является популярной библиотекой для работы с UPnP. Она включает в себя клиентскую библиотеку и утилиты, которые позволяют управлять перепродажей портов через UPnP. Для установки MiniUPnP в Python вы можете использовать следующий код:

pip install miniupnpc

Пример использования:

import miniupnpc

# Создаем объект для работы с UPnP
upnp = miniupnpc.UPnP()
upnp.discoverdelay = 200
upnp.discover()

# Получаем информацию о роутере
upnp.selectigd()

print("Router Name: ", upnp.routerinfo[0])
print("External IP: ", upnp.externalipaddress())

Этот код позволяет обнаруживать UPnP-устройства в сети и получать информацию о роутере.

2. Ruby: UPnP Ruby Gem

Для Ruby вы можете использовать гем upnplib, который позволяет управлять UPnP-устройствами. Установка производится через:

gem install upnplib

Пример использования:

require 'upnplib'

# Обнаружение UPnP-устройств
upnp = UPnplib::ControlPoint.new
devices = upnp.search

devices.each do |device|
  puts "Найдено устройство: #{device.friendly_name}"
end
3. PHP: UPnP для PHP

Хотя библиотека на PHP, доступная на GitHub, не поддерживается активно, ее все еще можно использовать для управления устройствами. Установка осуществляется путем клонирования репозитория и использования классов для контроля.

Пример использования может выглядеть следующим образом:

require 'UPnP.php';

$upnp = new UPnP();
$devices = $upnp->discover();

foreach ($devices as $device) {
    echo "Найдено устройство: " . $device->friendlyname . "\n";
}

Полезные утилиты для работы с UPnP

В дополнение к вышеперечисленным библиотекам, вам могут быть полезны команды для терминала, такие как gupnp-tools, которые предоставляют интерфейс командной строки для взаимодействия с UPnP-устройствами. Установить их можно через пакетный менеджер вашей операционной системы.

sudo apt install gupnp-tools

Вы можете использовать команды, такие как gupnp-discover, для поиска устройств в сети.

Заключение

Управление UPnP-роутерами из терминала Linux становится доступным благодаря разнообразным библиотекам и утилитам. Python, Ruby и PHP предлагают гибкие решения для взаимодействия с UPnP-устройствами. Независимо от выбранного вами языка, вы можете легко обнаружить устройства, а также управлять их настройками с минимальными усилиями. Надеюсь, данное руководство поможет вам эффективно использовать UPnP в ваших проектах.

Оцените материал
Добавить комментарий

Капча загружается...