67 lines
1.7 KiB
Python
67 lines
1.7 KiB
Python
from napalm_opnsense.opnsense import OPNsenseDriver
|
|
|
|
|
|
def main():
|
|
driver = OPNsenseDriver(
|
|
hostname="test.local",
|
|
username="api_key",
|
|
password="api_secret",
|
|
optional_args={
|
|
"base_url": "https://test.local",
|
|
"verify": False,
|
|
},
|
|
)
|
|
|
|
# Mock API responses to avoid real network calls
|
|
def fake_get(path: str):
|
|
if path == "/api/core/system/status":
|
|
return {
|
|
"hostname": "opnsense01",
|
|
"version": "24.7",
|
|
"model": "OPNsense",
|
|
"serial": "ABC123",
|
|
"uptime": 12345,
|
|
}
|
|
if path == "/api/interfaces/overview/export":
|
|
return {
|
|
"interfaces": [
|
|
{
|
|
"name": "em0",
|
|
"up": True,
|
|
"enabled": True,
|
|
"descr": "LAN",
|
|
"mac": "AA:BB:CC:DD:EE:FF",
|
|
"speed_mbps": 1000,
|
|
"mtu": 1500,
|
|
}
|
|
]
|
|
}
|
|
if path == "/api/interfaces/addresses/export":
|
|
return {
|
|
"items": [
|
|
{"interface": "em0", "address": "192.0.2.10", "prefix": 24},
|
|
{"interface": "em0", "address": "2001:db8::1", "prefix": 64},
|
|
]
|
|
}
|
|
return {}
|
|
|
|
# Monkeypatch before open()
|
|
driver._get = fake_get # type: ignore
|
|
|
|
driver.open()
|
|
|
|
print("Facts:")
|
|
print(driver.get_facts())
|
|
|
|
print("\nInterfaces:")
|
|
print(driver.get_interfaces())
|
|
|
|
print("\nInterfaces IP:")
|
|
print(driver.get_interfaces_ip())
|
|
|
|
driver.close()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|