Parameter an ein benutzerdefiniertes Aktionsscript übergeben

Beispielscripts in Bash, Python und Perl zeigen, wie Parameter an benutzerdefinierte Aktionsscripts übergeben werden.

Die folgenden einfachen Beispielscripts zeigen, wie die Assetmodell-API nach einem, Asset mit der übergebenen IP-Adresse der Angriffsquelle abgefragt wird. Für dieses Beispiel geben die Scripts das JSON-Format aus, das vom Endpunkt zurückgegeben wird.

Für die Scripts sind drei Parameter erforderlich:

  • IP-Adresse der Konsole
  • API-Token
  • IP-Adresse der Angriffsquelle

Diese Parameter werden im Bereich Scriptparameter des Fensters 'Benutzerdefinierte Aktion definieren' konfiguriert:

Abb. 1. Parameter für angepasstes Aktionsscript
Parameter für angepasstes Aktionsscript

Die Parameter werden in der Reihenfolge an das Script übergeben, in der sie im Fenster Benutzerdefinierte Aktion definieren hinzugefügt werden. Das ist in diesem Fall folgende Reihenfolge:

  1. console_ip
  2. api_token
  3. offense_source_ip
Wichtig: Dieses Beispiel enthält eine Netzereigniseigenschaft. Damit das Beispielscript auf der Testseite erfolgreich ausgeführt werden kann, müssen Sie dem offense_source-ip eine Quellen-IP-Adresse (xx.xx.xx.xx) als festen Eigenschaftswert zuweisen.

Für die Variablen, die am Anfang jedes der Beispielscripts definiert sind, werden die Beispielparameternamen verwendet, die im Fenster 'Benutzerdefinierte Aktion definieren' hinzugefügt wurden.

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