Вопрос или проблема
Я бы хотел иметь возможность управлять маршрутизатором 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 в ваших проектах.