'Python Dictionary of Fortigate Interfaces to Find Matching Interface to Specified IP
This data is sanitized. Can someone help me with a way to take this source ip, loop through the dictionary "name", "ipv4_addresses" keys for subkeys "ip" and "cidr_netmask" to find the one that is true and store the "name" in a variable? This should be matching up to Vlan3, 10.1.53.252/24. This is giving me a headache.
import ipaddress
source_ip = '10.1.53.100'
matching_interface_name = ipaddress.ip_address(source_ip) in ipaddress.ip_network('10.1.53.252/24')
interfaces = {
"http_method":"GET",
"results":[
{
"name":"any",
"valid_in_policy":true,
"icon":"fa-square-o"
},
{
"name":"port1",
"type":"physical",
"is_physical":true,
"valid_in_policy":true,
"is_available_for_acl":true,
"is_ipsecable":true,
"is_routable":true,
"is_ha_heartbeatable":true,
"is_ha_monitorable":true,
"is_ha_mgmt_candidate":true,
"supports_fortilink":true,
"supports_dhcp":true,
"is_explicit_proxyable":true,
"supports_device_id":true,
"supports_fortitelemetry":true,
"supports_transceiver":true,
"real_interface_name":"port1",
"vdom":"root",
"is_system_interface":true,
"status":"up",
"in_bandwidth_limit":0,
"out_bandwidth_limit":0,
"dhcp4_client_count":0,
"dhcp6_client_count":0,
"role":"undefined",
"monitor_bandwidth":false,
"ipv4_addresses":[
{
"ip":"192.168.100.91",
"netmask":"255.255.255.0",
"cidr_netmask":24
}
],
"mac_address":"00:09:0f:01:00:00",
"link":"down",
"duplex":"half",
"port_speed":"auto",
"media":"fiber",
"icon":"ftnt-interface-sfp-down"
},
{
"name":"mgmt1",
"type":"physical",
"is_physical":true,
"is_dedicated_mgmt":true,
"is_available_for_acl":true,
"is_dedicate_capable":true,
"is_routable":true,
"is_ha_heartbeatable":true,
"is_ha_monitorable":true,
"supports_fortilink":true,
"supports_dhcp":true,
"is_explicit_proxyable":true,
"supports_device_id":true,
"supports_fortitelemetry":true,
"real_interface_name":"mgmt1",
"vdom":"root",
"is_system_interface":true,
"status":"up",
"in_bandwidth_limit":0,
"out_bandwidth_limit":0,
"dhcp4_client_count":0,
"dhcp6_client_count":0,
"role":"undefined",
"monitor_bandwidth":false,
"ipv4_addresses":[
{
"ip":"192.168.1.95",
"netmask":"255.255.255.0",
"cidr_netmask":24
}
],
"mac_address":"00:09:0f:09:04:04",
"link":"down",
"duplex":"half",
"port_speed":"auto",
"media":"rj45",
"icon":"ftnt-interface-rj45-down"
},
{
"name":"Phones",
"type":"vap-switch",
"is_used_by_vlan":true,
"is_wifi":true,
"valid_in_policy":true,
"supports_ssid":true,
"is_ipsecable":true,
"is_routable":true,
"supports_dhcp":true,
"is_explicit_proxyable":true,
"supports_device_id":true,
"supports_fortitelemetry":true,
"real_interface_name":"Phones",
"vdom":"root",
"is_system_interface":true,
"status":"up",
"in_bandwidth_limit":0,
"out_bandwidth_limit":0,
"dhcp4_client_count":0,
"dhcp6_client_count":0,
"role":"lan",
"monitor_bandwidth":false,
"ipv4_addresses":[
{
"ip":"10.3.171.254",
"netmask":"255.255.255.0",
"cidr_netmask":24
}
],
"mac_address":"00:f3:58:b7:2c:15",
"link":"up",
"port_speed":"auto",
"ssid":"Phones",
"icon":"fa-wifi-up"
},
{
"name":"Outside",
"type":"vlan",
"is_vlan":true,
"valid_in_policy":true,
"is_available_for_acl":true,
"is_ipsecable":true,
"is_routable":true,
"supports_dhcp":true,
"is_explicit_proxyable":true,
"supports_device_id":true,
"supports_fortitelemetry":true,
"real_interface_name":"Outside",
"vdom":"root",
"is_system_interface":true,
"status":"up",
"in_bandwidth_limit":0,
"out_bandwidth_limit":0,
"description":"Internet",
"dhcp4_client_count":0,
"dhcp6_client_count":0,
"role":"lan",
"monitor_bandwidth":true,
"ipv4_addresses":[
{
"ip":"172.18.39.71",
"netmask":"255.255.255.248",
"cidr_netmask":29
}
],
"mac_address":"00:19:1f:19:10:10",
"link":"up",
"vlan_interface":"",
"vlan_id":209,
"port_speed":"auto",
"icon":"ftnt-vlan-up"
},
{
"name":"Vlan3",
"type":"vlan",
"is_vlan":true,
"valid_in_policy":true,
"is_available_for_acl":true,
"is_ipsecable":true,
"is_routable":true,
"supports_dhcp":true,
"is_explicit_proxyable":true,
"supports_device_id":true,
"supports_fortitelemetry":true,
"real_interface_name":"Vlan3",
"vdom":"root",
"is_system_interface":true,
"status":"up",
"in_bandwidth_limit":0,
"out_bandwidth_limit":0,
"description":"Test",
"dhcp4_client_count":0,
"dhcp6_client_count":0,
"role":"lan",
"monitor_bandwidth":false,
"ipv4_addresses":[
{
"ip":"10.1.53.252",
"netmask":"255.255.255.0",
"cidr_netmask":24
}
],
"mac_address":"00:09:1f:19:00:20",
"link":"up",
"vlan_interface":"Uplink",
"vlan_id":3,
"port_speed":"auto",
"icon":"ftnt-vlan-up"
},
{
"name":"Vlan201",
"type":"vlan",
"is_vlan":true,
"valid_in_policy":true,
"is_available_for_acl":true,
"is_ipsecable":true,
"is_routable":true,
"supports_dhcp":true,
"is_explicit_proxyable":true,
"supports_device_id":true,
"supports_fortitelemetry":true,
"real_interface_name":"Vlan201",
"vdom":"root",
"is_system_interface":true,
"status":"up",
"in_bandwidth_limit":0,
"out_bandwidth_limit":0,
"description":"Vlan3",
"dhcp4_client_count":0,
"dhcp6_client_count":0,
"role":"lan",
"monitor_bandwidth":true,
"ipv4_addresses":[
{
"ip":"10.1.5.155",
"netmask":"255.255.255.0",
"cidr_netmask":24
}
],
"mac_address":"00:09:0f:09:00:20",
"link":"up",
"vlan_interface":"Uplink",
"vlan_id":201,
"port_speed":"auto",
"icon":"ftnt-vlan-up"
},
{
"name":"virtual-wan-link",
"vdom":"root",
"is_sdwan_zone":true,
"valid_in_policy":false,
"status":"down",
"type":"sdwan-zone",
"members":[
],
"icon":"ftnt-virtual-wan-link-down-disabled",
"link":"down"
}
],
"vdom":"root",
"path":"system",
"name":"available-interfaces",
"status":"success",
"serial":"12345",
"version":"v1.1.1.1",
"build":1111
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|