Perl Script to check GTM Wideip and its associated Pool status
Problem this snippet solves:
This Perl script will query the status and state of Wideip and its Associated Pool and pool member state
How to use this snippet:
gtmstate.pl < gtmsyncmember> < user> < pass> < wideip>Code :
#!/usr/bin/perl
use SOAP::Lite;
use Data::Dumper;
my $BIGIP = $ARGV[0];
my $User = $ARGV[1];
my $Pass = $ARGV[2];
my $sWideIP = $ARGV[3];
sub SOAP::Transport::HTTP::Client::get_basic_credentials
{
return "$User" => "$Pass";
}
&getWideIPPoolList($sWideIP);
sub SOAP::Deserializer::typecast
{
my ($self, $value, $name, $attrs, $children, $type) = @_;
my $retval = undef;
if ( "{urn:iControl}GlobalLB.LBMethod" == $type )
{
$retval = $value;
}
return $retval;
}
sub GetInterface()
{
my ($module, $name) = @_;
$interface = SOAP::Lite
-> uri("urn:iControl:$module/$name")
-> readable(1)
-> proxy("https://$BIGIP/iControl/iControlPortal.cgi");
eval { $interface->transport->http_request->header
( 'Authorization' => 'Basic ' . MIME::Base64::encode("$User:$Pass", '') ); };
return $interface;
}
sub getWideIPPoolList()
{
my ($wideIP) = @_;
print "WIDEIP: $wideIP\n";
$GTMWideip = &GetInterface("GlobalLB", "WideIP");
$soapResponse = $GTMWideip->get_wideip_pool(SOAP::Data->name(wide_ips => [$wideIP]));
$soapResponse2 = $GTMWideip->get_enabled_state(SOAP::Data->name(wide_ips => [$wideIP]));
$soapResponse3 = $GTMWideip->get_object_status(SOAP::Data->name(wide_ips => [$wideIP]));
@WideIPPoolAofA = @{$soapResponse->result};
@WideIPPoolA = @{@WideIPPoolAofA[0]};
@states =@{$soapResponse2->result};
@avail=@{$soapResponse3->result};
print "Wideip State::@states\n";
foreach $availa (@avail)
{
$availb=$availa->{"availability_status"};
print "Wideip Status:$availb\n";
}
foreach $WideIPPool (@WideIPPoolA)
{
$pool_name = $WideIPPool->{"pool_name"};
print " Pool $pool_name\n";
&getWideIPPoolMemberList($pool_name);
}
}
sub getWideIPPoolMemberList()
{
my ($pool) = @_;
$GTMPool = &GetInterface("GlobalLB", "Pool");
$GTMPoolmember=&GetInterface("GlobalLB","PoolMember");
$soapResponse = $GTMPool->get_member(SOAP::Data->name(pool_names => [$pool]) );
$soapResponse2=$GTMPool->get_enabled_state(SOAP::Data->name(pool_names => [$pool]));
$soapResponse3=$GTMPool->get_object_status(SOAP::Data->name(pool_names => [$pool]));
@states = @{$soapResponse2->result};
@poolstate = @{$soapResponse3->result};
foreach $poolavail (@poolstate)
{
$pools=$poolavail->{"availability_status"};
print "Pool Status:$pools\n";
}
@PoolMemberDefinitionAofA = @{$soapResponse->result};
@PoolMemberDefinitionA = @{@PoolMemberDefinitionAofA[0]};
foreach $PoolMemberDefinition(@PoolMemberDefinitionA)
{
$member = $PoolMemberDefinition->{"member"};
$address = $member->{"address"};
$port = $member->{"port"};
print " MEMBER: ${address}:${port}:STATE:@states\n";
}
}Updated Jun 06, 2023
Version 2.0Anesh
Cirrostratus
Joined June 27, 2011
1 Comment
- Amanpreet_Singh
Cirrostratus
Hi, Can you share any sample output of this script. It would be good to view before trying it into production
Help guide the future of your DevCentral Community!
What tools do you use to collaborate? (1min - anonymous)