I would like to be able to control a UPnP Router from the terminal in linux. I don't mind what language the software is in, but Ruby/Python/PHP would be preferable.
It's not very clear what you wish to accomplish. Perhaps this list of "upnp" related packages (Gentoo) will prove useful to you.
Net-UPnP http://search.cpan.org/dist/Net-UPnP/ Perl extension for UPnP miniupnpc http://miniupnp.free.fr/ Python bindings for UPnP client library kio-upnp-ms https://projects.kde.org/projects/playground/base/kio-upnp-ms A upnp KIO slave for KDE gupnp-dlna http://gupnp.org/ Library that provides DLNA-related functionality for MediaServers upnpscan http://www.cqure.net/wp/upnpscan/ Scans the network for UPNP capable devices gupnp http://gupnp.org/ An object-oriented framework for creating UPnP devs and control points gupnp-av http://gupnp.org/ A small utility library that aims to ease the handling UPnP A/V profiles gupnp-igd http://gupnp.org This is a library to handle UPnP IGD port mapping for GUPnP. gupnp-ui http://gupnp.org Collection of simple GTK+ widgets on top of GUPnP. gupnp-vala http://gupnp.org/ Vala bindings for the GUPnP framework
libupnp http://pupnp.sourceforge.net/ An Portable Open Source UPnP Development Kit miniupnpc http://miniupnp.free.fr/ UPnP client library and a simple UPnP client autoupnp https://bitbucket.org/mgorny/autoupnp/ Automatic open port forwarder using UPnP gupnp-tools http://gupnp.org/ Free replacements of Intel UPnP tools that use GUPnP. miniupnpd http://miniupnp.free.fr/ MiniUPnP IGD Daemon
@nickw444 Did any of these prove useful? Jan 17, 2017 at 22:02
No idea, I just searched for upnp in the package manager. Jan 25, 2017 at 22:41
This project hasn't been maintained in a while,but it is UPnP for php
From the description:
This library aims to be a convenient set of classes for controlling UPnP devices on a network. Some service specific classes for devices that leverage UPnP/SSDP may also be included such as the Roku (ecp, simplevideoplayer, and firefox), Chromecast (castv2), XBMC. Any device that can be discovered via SSDP will be considered for inclusion. Should mDNS be implemented in the future, package name may be changed to better reflect its role/purpose.