pyNetgear provides an easy to use Python API to control your Netgear router. It uses the SOAP-api on modern Netgear routers to communicate. It is built by reverse engineering the requests made by the NETGEAR Genie app.
pyNetgear works with Python 2 and 3.
If you are connected to the network of the Netgear router, a host is optional.
If you are connected via a wired connection to the Netgear router, a password is optional.
The username defaults to admin.
The port defaults to 5000.
The ssl defaults to false.
You can specify url and it will take precedence on host/port/ssl parameters.
This allows the use of HTTPS,
https://orbilogin.com for example.
It currently supports the following operations:
Logs in to the router. Will return True or False to indicate success.
Returns a list of named tuples describing the device signal, ip, name, mac, type, link_rate and allow_or_block.
Returns a list of named tuples describing the device signal, ip, name, mac, type, link_rate, allow_or_block, device_type, device_model, ssid and conn_ap_mac.
This call is slower and probably heavier on the router load.
Return a dict containing the traffic meter information from the router (if enabled in the webinterface).
Allows user to block/unblock devices from accessing router by specifying macaddr and new device_status (Block/Allow) Note: In order to use this function, Remote Management _must be enabled in the router's admin settings.
You can install PyNetgear from PyPi using
pip3 install pynetgear (use
pip if you're still using Python 2).
To test run from the console:
$ python -m pynetgear [<pass>] [<host>] [<user>] [<port>] [<ssl>]
To use within your Python scripts:
from pynetgear import Netgear netgear = Netgear(password=mypassword) for i in netgear.get_attached_devices(): print i
It has been tested with the Netgear R6300 router and the Netgear WNDR4500 router. According to the NETGEAR Genie app description, the following routers should work: