Ps Get Bigip Routes
Problem this snippet solves:
This Powershell application prints out the static TMM and Management routing table from the BIG-IP.
Usage: .\GetBigipRoutes.ps1 bigip username pass
How to use this snippet:
Script
getBigipRoutes.ps1
Code :
#---------------------------------------------------------------------------- # The contents of this file are subject to the "END USER LICENSE AGREEMENT FOR F5 # Software Development Kit for iControl"; you may not use this file except in # compliance with the License. The License is included in the iControl # Software Development Kit. # # Software distributed under the License is distributed on an "AS IS" # basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See # the License for the specific language governing rights and limitations # under the License. # # The Original Code is iControl Code and related documentation # distributed by F5. # # The Initial Developer of the Original Code is F5 Networks, # Inc. Seattle, WA, USA. Portions created by F5 are Copyright (C) 1996-2009 F5 Networks, # Inc. All Rights Reserved. iControl (TM) is a registered trademark of F5 Networks, Inc. # # Alternatively, the contents of this file may be used under the terms # of the GNU General Public License (the "GPL"), in which case the # provisions of GPL are applicable instead of those above. If you wish # to allow use of your version of this file only under the terms of the # GPL and not to allow others to use your version of this file under the # License, indicate your decision by deleting the provisions above and # replace them with the notice and other provisions required by the GPL. # If you do not delete the provisions above, a recipient may use your # version of this file under either the License or the GPL. #---------------------------------------------------------------------------- param ( $bigip = $null, $user = $null, $pass = $null ); Set-PSDebug -strict; #------------------------------------------------------------------------- # function New-RouteObject #------------------------------------------------------------------------- function New-RouteObject() { param([string]$destination, [string]$netmask, [string]$gateway); $o = 1 | select destination, netmask, gateway; $o.destination = $destination; $o.netmask = $netmask; $o.gateway = $gateway; $o; } #------------------------------------------------------------------------- # function Sort-RouteObjectList #------------------------------------------------------------------------- function Sort-RouteObjectList() { param($list = $null); if ( $list ) { $list | sort-object { "{0:d3}.{1:d3}.{2:d3}.{3:d3}" -f @([int[]]$_.destination.split('.')) } } } #------------------------------------------------------------------------- # function Get-TMMRoutes #------------------------------------------------------------------------- function Get-TMMRoutes() { $RouteDefinitionA = (Get-F5.iControl).NetworkingRouteTable.get_static_route(); $RouteTypeEntryA = (Get-F5.iControl).NetworkingRouteTable.get_static_route_type($RouteDefinitionA); $RouteGatewaysA = (Get-F5.iControl).NetworkingRouteTable.get_static_route_gateway($RouteDefinitionA); $RoutePoolsA = (Get-F5.iControl).NetworkingRouteTable.get_static_route_pool($RouteDefinitionA); $RouteVLANsA = (Get-F5.iControl).NetworkingRouteTable.get_static_route_vlan($RouteDefinitionA); $ldict_gw_ip = @(); $ldict_gw_pool = @(); $ldict_gw_vlan = @(); $ldict_gw_reject = @(); for($i=0; $i -lt $RouteDefinitionA.Length; $i++) { $RouteDef = $RouteDefinitionA[$i]; switch ($RouteTypeEntryA[$i]) { "ROUTE_TYPE_GATEWAY" { $ldict_gw_ip += (New-RouteObject -destination $RouteDef.destination -netmask $RouteDef.netmask -gateway $RouteGatewaysA[$i]); } "ROUTE_TYPE_POOL" { $ldict_gw_pool += (New-RouteObject -destination $RouteDef.destination -netmask $RouteDef.netmask -gateway $RoutePoolsA[$i]); } "ROUTE_TYPE_INTERFACE" { $ldict_gw_vlan += (New-RouteObject -destination $RouteDef.destination -netmask $RouteDef.netmask -gateway $RouteVLANsA[$i]); } "ROUTE_TYPE_REJECT" { $ldict_gw_reject += $RouteDef; } } } Write-Host "TMM IP Routes: (net mask ip)" Sort-RouteObjectList -list $ldict_gw_ip; Write-Host "TMM Pool Routes: (net mask pool)" Sort-RouteObjectList -list $ldict_gw_pool; Write-Host "TMM VLAN Routes: (net mask vlan)" Sort-RouteObjectList -list $ldict_gw_vlan; Write-Host "TMM Rejected Routes: (net mask)" Sort-RouteObjectList -list $ldict_gw_reject; } #------------------------------------------------------------------------- # function Get-MgmtRoutes #------------------------------------------------------------------------- function Get-MgmtRoutes() { $RouteDefinitionA = $(Get-F5.iControl).NetworkingRouteTable.get_management_route(); $RouteGatewaysA = $(Get-F5.iControl).NetworkingRouteTable.get_management_route_gateway($RouteDefinitionA); $ldict_gw_mgmt = @(); for($i=0; $i -lt $RouteDefinitionA.Length; $i++) { $RouteDef = $RouteDefinitionA[$i]; $ldict_gw_mgmt += (New-RouteObject -destination $RouteDef.destination -netmask $RouteDef.netmask -gateway $RouteGatewaysA[$i]); } Write-Host "Management Routes: (net, mask, ip)"; Sort-RouteObjectList -list $ldict_gw_mgmt; } #------------------------------------------------------------------------- # Do-Initialize #------------------------------------------------------------------------- function Do-Initialize() { if ( (Get-PSSnapin | Where-Object { $_.Name -eq "iControlSnapIn"}) -eq $null ) { Add-PSSnapIn iControlSnapIn } $success = Initialize-F5.iControl -HostName $bigip -Username $user -Password $pass; return $success; } #------------------------------------------------------------------------- # Main Application Logic #------------------------------------------------------------------------- if ( ($bigip -eq $null) -or ($user -eq $null) -or ($pass -eq $null) ) { Write-Usage; } if ( Do-Initialize ) { Get-TMMRoutes; Get-MgmtRoutes; } else { Write-Error "ERROR: iControl subsystem not initialized" }
Published Mar 09, 2015
Version 1.0CodeCentral_194
Cirrus
Joined May 05, 2019
CodeCentral_194
Cirrus
Joined May 05, 2019
No CommentsBe the first to comment