Transmission de paramètres à un script d'action personnalisé

Des exemples de scripts dans Bash, Python et Perl montrent comment transmettre des paramètres à des scripts d'action personnalisés.

Les exemples de scripts simples suivants montrent comment interroger l'API de modèle d'actif pour un actif avec l'adresse IP source de l'infraction fournie. Dans l'intérêt de cet exemple, les scripts extraient le JSON renvoyé par le nœud final.

Les scripts nécessitent trois paramètres :

  • Adresse IP de la console
  • Jeton d'API
  • Adresse IP source d'infraction

Ces paramètres sont configurés dans la zone Paramètres de script de la fenêtre Définir une action personnalisée :

Figure 1 : Paramètres de script d'action personnalisée
Paramètres de script d'action personnalisée

Chaque paramètre est transmis au script dans l'ordre dans lequel il a été ajouté dans la fenêtre Définir une action personnalisée. Dans ce cas :

  1. console_ip
  2. api_token
  3. offense_source_ip
Important: Cet exemple contient une propriété d'événement de réseau. Pour que l'exemple de script soit exécuté avec succès sur la page de test, vous devez affecter une adresse IP source (xx.xx.xx.xx) en tant que valeur de propriété fixe à Infraction_source_ip.

Les variables définies au début de chaque exemple de script utilisent les exemples de noms de paramètre qui ont été ajoutés dans la fenêtre Définir une action personnalisée.

Figure 2. call_asset_model.sh
#!/bin/bash
console_ip=$1 
api_token=$2
offense_source_ip=$3

auth_header="SEC:$api_token"

output=$(curl -k -H $auth_header https://$console_ip/console/restapi/api/
asset_model/assets?filter=interfaces%20contains%20%28%20ip_addresses
%20contains%20%28%20value%20%3D%20%22$offense_source_ip%22%29%29)

# Basic print out of the output of the command
echo $output
Figure 3. call_asset_model.py
#!/usr/bin/python
import sys
import requests
console_ip = sys.argv[1] 
api_token = sys.argv[2]
offense_source_ip = sys.argv[3]

auth_header = {'SEC' : api_token }

endpoint = "https://{0}/console/restapi/api/asset_model/
assets?filter=interfaces%20contains%20%28%20ip_addresses
%20contains%20%28%20value%20%3D%20%22{1}%22%29%29"
.format(console_ip, offense_source_ip)

response = requests.get(endpoint, headers=auth_header, verify=False)

# Basic print out of the output of the command
print(response.json())
Figure 4. call_asset_model.pl
#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;

my $console_ip = $ARGV[0]; 
my $api_token = $ARGV[1];
my $offense_source_ip = $ARGV[2];

my $endpoint = "https://$console_ip/console/restapi/api/asset_model/
assets?filter=interfaces%20contains%20%28%20ip_addresses
%20contains%20%28%20value%20%3D%20%22$offense_source_ip%22%29%29";

my $client = LWP::UserAgent -> new(ssl_opts => { verify_hostname => 0 });

my $response = $client -> get($endpoint, "SEC" => $api_token);

# Basic print out of the output of the command
print $response -> decoded_content;