Get device info with a device_id or WAN MAC address
This commit is contained in:
parent
4cd86bfbb0
commit
221de0c1a0
4 changed files with 26 additions and 3 deletions
|
@ -6,6 +6,7 @@ readme = "README.md"
|
||||||
requires-python = ">=3.13"
|
requires-python = ">=3.13"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"httpx>=0.28.1",
|
"httpx>=0.28.1",
|
||||||
|
"netaddr>=1.3.0",
|
||||||
"pydantic-settings[yaml]>=2.9.1",
|
"pydantic-settings[yaml]>=2.9.1",
|
||||||
"typer>=0.15.3",
|
"typer>=0.15.3",
|
||||||
]
|
]
|
||||||
|
|
|
@ -40,7 +40,10 @@ def reset(): ...
|
||||||
|
|
||||||
|
|
||||||
@app.command(help="Get info on the device")
|
@app.command(help="Get info on the device")
|
||||||
async def info(device_id: Annotated[str, typer.Argument()]):
|
async def info(
|
||||||
|
device_id: Annotated[str, typer.Argument(help="device_id or WAN MAC address")],
|
||||||
|
):
|
||||||
|
"""Get device info, from its device_id or WAN interface MAC address"""
|
||||||
try:
|
try:
|
||||||
resp = await server.get_device_info(device_id)
|
resp = await server.get_device_info(device_id)
|
||||||
print(dumps(resp))
|
print(dumps(resp))
|
||||||
|
|
|
@ -3,6 +3,7 @@ from json import dumps
|
||||||
from urllib.parse import quote
|
from urllib.parse import quote
|
||||||
|
|
||||||
import httpx
|
import httpx
|
||||||
|
from netaddr import EUI, AddrFormatError
|
||||||
|
|
||||||
from gacsco.config import conf
|
from gacsco.config import conf
|
||||||
from gacsco.utils import GacscoError
|
from gacsco.utils import GacscoError
|
||||||
|
@ -41,8 +42,15 @@ class Server:
|
||||||
return resp.json()
|
return resp.json()
|
||||||
|
|
||||||
async def get_device_info(self, device_id: str):
|
async def get_device_info(self, device_id: str):
|
||||||
async with httpx.AsyncClient(cookies=self.cookies) as client:
|
try:
|
||||||
|
EUI(device_id)
|
||||||
|
except AddrFormatError:
|
||||||
query = {"_id": device_id}
|
query = {"_id": device_id}
|
||||||
|
else:
|
||||||
|
query = {
|
||||||
|
"InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.MACAddress": device_id
|
||||||
|
}
|
||||||
|
async with httpx.AsyncClient(cookies=self.cookies) as client:
|
||||||
resp = await client.get(
|
resp = await client.get(
|
||||||
f"{self.url}/devices/?",
|
f"{self.url}/devices/?",
|
||||||
params={"query": dumps(query)},
|
params={"query": dumps(query)},
|
||||||
|
|
13
uv.lock
generated
13
uv.lock
generated
|
@ -94,10 +94,11 @@ wheels = [
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "genieacs-commander"
|
name = "gacsco"
|
||||||
source = { editable = "." }
|
source = { editable = "." }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "httpx" },
|
{ name = "httpx" },
|
||||||
|
{ name = "netaddr" },
|
||||||
{ name = "pydantic-settings", extra = ["yaml"] },
|
{ name = "pydantic-settings", extra = ["yaml"] },
|
||||||
{ name = "typer" },
|
{ name = "typer" },
|
||||||
]
|
]
|
||||||
|
@ -111,6 +112,7 @@ dev = [
|
||||||
[package.metadata]
|
[package.metadata]
|
||||||
requires-dist = [
|
requires-dist = [
|
||||||
{ name = "httpx", specifier = ">=0.28.1" },
|
{ name = "httpx", specifier = ">=0.28.1" },
|
||||||
|
{ name = "netaddr", specifier = ">=1.3.0" },
|
||||||
{ name = "pydantic-settings", extras = ["yaml"], specifier = ">=2.9.1" },
|
{ name = "pydantic-settings", extras = ["yaml"], specifier = ">=2.9.1" },
|
||||||
{ name = "typer", specifier = ">=0.15.3" },
|
{ name = "typer", specifier = ">=0.15.3" },
|
||||||
]
|
]
|
||||||
|
@ -258,6 +260,15 @@ wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" },
|
{ url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" },
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "netaddr"
|
||||||
|
version = "1.3.0"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/54/90/188b2a69654f27b221fba92fda7217778208532c962509e959a9cee5229d/netaddr-1.3.0.tar.gz", hash = "sha256:5c3c3d9895b551b763779ba7db7a03487dc1f8e3b385af819af341ae9ef6e48a", size = 2260504, upload-time = "2024-05-28T21:30:37.743Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/12/cc/f4fe2c7ce68b92cbf5b2d379ca366e1edae38cccaad00f69f529b460c3ef/netaddr-1.3.0-py3-none-any.whl", hash = "sha256:c2c6a8ebe5554ce33b7d5b3a306b71bbb373e000bbbf2350dd5213cc56e3dbbe", size = 2262023, upload-time = "2024-05-28T21:30:34.191Z" },
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "packaging"
|
name = "packaging"
|
||||||
version = "25.0"
|
version = "25.0"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue