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
Cirrostratus
Joined May 05, 2019
CodeCentral_194
Cirrostratus
Joined May 05, 2019
No CommentsBe the first to comment
Help guide the future of your DevCentral Community!
What tools do you use to collaborate? (1min - anonymous)