Perl Ssh Access
Problem this snippet solves:
A perl sample illustrating how to configure ssh access to a BIG-IP.
perl .\SSHAccess.pl bigip user pass¶
- Query SSH Access settings.
perl .\SSHAccess.pl bigip user pass STATE_ENABLED¶
- Enable SSH Access for all IP addresses
perl .\SSHAccess.pl bigip user pass STATE_ENABLED "10.10.10.10,20.20.20.20"¶
- Enable SSH Access for ip addresses 10.10.10.10 and 20.20.20.20
Code :
#!/usr/bin/perl
#use SOAP::Lite + trace => qw(method debug);
use SOAP::Lite;
sub SOAP::Deserializer::typecast-->
{
my ($self, $value, $name, $attrs, $children, $type) = @_;
return $value;
}
#----------------------------------------------------------------------------
# Validate Arguments
#----------------------------------------------------------------------------
my $sHost = $ARGV[0];
my $sUID = $ARGV[1];
my $sPWD = $ARGV[2];
my $sSTATE = $ARGV[3];
my $sADDRS = $ARGV[4];
if ( ($sHost eq "") or ($sUID eq "") or ($sPWD eq "") )
{
die ("Usage: SystemState.pl host port uid pwd\n");
}
#----------------------------------------------------------------------------
# Transport Information
#----------------------------------------------------------------------------
sub SOAP::Transport::HTTP::Client::get_basic_credentials-->
{
return "$sUID" => "$sPWD";
}
$Services = SOAP::Lite
-> uri('urn
-> proxy("https://$sHost/iControl/iControlPortal.cgi");
eval { $Services->transport->http_request->header
(
'Authorization' =>
'Basic ' . MIME::Base64::encode("$sUID:$sPWD", '')-->
); };
#----------------------------------------------------------------------------
# sub getSSHAccess
#----------------------------------------------------------------------------
sub getSSHAccess()
{
my $soapResponse = $Services->get_ssh_access_v2();
&checkResponse($soapResponse);
my $SSHAccessV2 = $soapResponse->result;
my $state = $SSHAccessV2->{"state"};
my @addresses = @{ $SSHAccessV2->{"addresses"} };
print "State: $state\n";
foreach $address (@addresses)
{
print " -> $address\n";
}
}
#----------------------------------------------------------------------------
# sub setSSHAccess
#----------------------------------------------------------------------------
sub setSSHAccess()
{
my ($state, $addrlist) = (@_);
my @addresses = split(/,/, $addrlist);
my $SSHAccessV2 = {
state => $state,
addresses => [@addresses]
};
my $soapResponse = $Services->set_ssh_access_v2(
SOAP::Data->name(access => $SSHAccessV2)
);
&checkResponse($soapResponse);
}
#----------------------------------------------------------------------------
# checkResponse
#----------------------------------------------------------------------------
sub checkResponse()
{
my ($soapResponse) = (@_);
if ( $soapResponse->fault )
{
print $soapResponse->faultcode, " ", $soapResponse->faultstring, "\n";
exit();
}
}
#----------------------------------------------------------------------------
# Main program logic
#----------------------------------------------------------------------------
if ( $sSTATE eq "" )
{
&getSSHAccess();
}
elsif ( $sADDRS eq "" )
{
&setSSHAccess($sSTATE, "ALL");
&getSSHAccess();
}
else
{
&setSSHAccess($sSTATE, $sADDRS);
&getSSHAccess();
}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