Mercredi, Novembre 10, 2021
Connexion aux API en Powershell et première requête
Prérequis
- installation du SWQL Studio qui vient avec le module nécessaire pour PowerShell https://github.com/solarwinds/OrionSDK
- ouverture des ports vers un serveur SolarWinds port 17778 en SSL
Intérêts des API
- Pas d’accès direct à la base de données, il suffit d’une connexion à un serveur SolarWinds (central ou poller aditionnel)
- Indépendant des changements de schéma de la DB
- Limitations de compte héritées directement de SolarWinds
Connexion basique
# import du module nécessaire
Import-Module SwisPowerShell
# définition des variables
$hostname = '127.0.0.1'
$user = 'admin'
$password = 'password'
# connexion au serveur
$swis = connect-swis -hostname $hostname -user $user -password $password
# requête SWQL
$query = 'select top 10 caption, nodeid from orion.nodes'
# récupération basique des données
get-swisdata -query $query -swisconnection $swis
Il est possible également depuis le serveur lui-même de se connecter avec un certificat du serveur
# import du module
Import-Module SwisPowerShell
# définition des variables
$hostname = '127.0.0.1'
$swis = connect-swis -hostname $hostname -certificate
$query = 'select top 10 nodeid, vendor, machinetype, caption, ip_address from orion.nodes'
get-swisdata -query $query -swisconnection $swis # | Export-Csv -Path "SW_NODE_EXPORT.csv" -NoTypeInformation
Quelques informations de plus
Import du module powershell nécessaire
Import-Module SwisPowerShell
Connexion aux APIs
Il existe plusieurs méthode d’authentification aux APIs :
- credential : à récupérer depuis get-credential
- username et password : des strings
- certificate : utilisation du certificat local du serveur Orion
- trusted : utilisation du compte Windows connecté
# credential
$creds = Get-Credential
$swis = connect-swis -hostname $hostname -credential $creds
# username password
$swis = connect-swis -hostname $hostname -username admin -password password
# certificat
$swis = connect-swis -hostname $hostname -certificate
# trusted
$swis = connect-swis -hostname $hostname -trusted
A noter l’argument -hostname
est optionnel, par défaut la connexion se fait sur le localhost, en exécution locale sur un serveur SolarWinds on peut donc s’en passer.
Récupération des données
La commande get-swisdata
peut prendre 3 arguments:
- SwisConnection : obligatoire, c’est le résultat de la commande précédente
- Query : obligatoire, c’est la requête SWQL, elle peut être directement incluse dans la commande get-swisdata ou passée par une variable
- Parameters : facultatif, peut être utiliser pour fournir des paramètres à la requête
Requête basique
$query = 'select top 10 nodeid, vendor, machinetype, caption, ip_address from orion.nodes'
get-swisdata -query $query -swisconnection $swis
Requête avec paramètre
$query = 'select top 10 nodeid, vendor, machinetype, caption, ip_address from orion.nodes where vendor = @v'
get-swisdata -query $query -swisconnection $swis -parameters @{ v = 'Cisco' }