Christoph Biesinger hat ein Script erarbeitet, welches in einer Art Tutorial ein paar Konzepte der Nitro API, Powershell und des Arbeitsprozesses verdeutlich. Das Script „unlockAAAUser.ps1“ entsperrt einen User am NetScaler und fragt vorher die notwendigen Parameter der NetScaler IP, Credentials und des zu entsperrenden Users ab. Im Folgenden wird das Schritt für Schritt erklärt. Das komplette Script findet ihr am Ende des Beitrags.
1.)
Um die Nitro API zu verwenden, brauchen wir zuerst die Nitro Bibliothek, welche von jedem NetScaler unter Downloads geladen werden kann. Da wir ein PowerShell-Script schreiben, nehmen wir die Version „NITRO API SDK for C#“. Die im Subordner lib befindlichen Bibliotheken brauchen wir für unser Script.
Dabei sehen wir, dass das Objekt das Attribut username und die Methode unlock besitzt, welche für uns nützlich sind. Mit diesen Informationen erstellen wir nun ein neues lokales aaauser Objekt in der Variablen $aaauser und setzen das username Attribut auf den zu entsperrenden User.
$aaauser = New-Object com.citrix.netscaler.nitro.resource.config.aaa.aaauser $aaauser.username = $AAAUserName
8.)
Um den User schlussendlich zu entsperren, nutzen wir die Methode unlock mit der Session und dem aaauser Objekt. Anschließend geben wir das Ergebnis der Aktion auf der Konsole aus.
$result = [com.citrix.netscaler.nitro.resource.config.aaa.aaauser]::unlock($nitrosession, $aaauser) Write-Host $result.message
9.)
Im letzten Schritt schließen wir die vorher erstellte Session.
$session = $nitrosession.logout()
[CmdletBinding()] param( [Parameter(Mandatory=$True)][String]$IPAddress, [Parameter(Mandatory=$True)][String]$Username, [Parameter(Mandatory=$True)][SecureString]$Password, [Parameter(Mandatory=$True)][String]$AAAUserName ) function Main { try { Add-Type -Path "nitro.dll" $bstr = [Runtime.InteropServices.Marshal]::SecureStringToBSTR($Password) $password = [Runtime.InteropServices.Marshal]::PtrToStringAuto($bstr) $nitrosession = New-Object com.citrix.netscaler.nitro.service.nitro_service($IPAddress, "http") $session = $nitrosession.login($Username, $password) # Create aaauser resource $aaauser = New-Object com.citrix.netscaler.nitro.resource.config.aaa.aaauser $aaauser.username = $AAAUserName $result = [com.citrix.netscaler.nitro.resource.config.aaa.aaauser]::unlock($nitrosession, $aaauser) Write-Host $result.message $session = $nitrosession.logout() } catch { $ErrorMessage = $_.Exception.Message $FailedItem = $_.Exception.ItemName LogWrite "[-] Error while unlocking user! ErrorMessage: $ErrorMessage" Break } } Main