Pasar parámetros a un script de acción personalizada

Los scripts de ejemplo de Bash, Python y Perl muestran cómo pasar parámetros a scripts de acción personalizada.

Los scripts de ejemplo simples siguientes muestran cómo consultar la API de modelo de activo para un activo con la dirección IP de origen de infracción proporcionada. Para este ejemplo, la salida de los scripts es el JSON devuelto por el punto final.

Los scripts necesitan tres parámetros:

  • Dirección IP de la consola
  • Señal de API
  • Dirección IP de origen

Estos parámetros de configuran en el área Parámetros de script de la ventana Definir una acción personalizada:

Figura 1. Parámetros de script de acción personalizada
Parámetros de script de acción personalizada

Cada parámetro se pasa al script en el orden en el que se ha añadido en la ventana Definir acción personalizada. En este caso:

  1. console_ip
  2. api_token
  3. offense_source_ip
Importante: Este ejemplo contiene una propiedad de suceso de red. Para que el script de ejemplo se ejecute correctamente en la página de prueba, debe asignar una dirección IP de origen (xx.xx.xx.xx) como valor de propiedad fijo a offense_source_ip.

Las variables que se han definido al principio de cada uno de los scripts de ejemplo utilizan los nombres de parámetro de ejemplo que se han añadido en la ventana Definir acción personalizada.

Figura 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
Figura 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())
Figura 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;