6.8. Comandi esterni

E’ possibile eseguire script esterni dall’interfaccia grafica.

I comandi esterni saranno visibili da interfaccia web come “menu” aggiuntivi nella pagina di una risorsa di sanet (nodo/tag/tenant/ecc.).

I comandi esterni devono produrre output HTML valido.

6.8.1. Installare script esterni

Gli script esterni devono essere posizionani nella directory:

{{VAR}}/<tenant name or id>/menus/<tipo risorsa>/<script.sh>

Esempi:

/var/lib/sanet3/site/menus/node/ping.sh

/var/lib/sanet3/a575bd788451436cbe8cf0582965a035/menus/node/ping.sh

6.8.2. Formato del file di script

Tutti gli script esterni devono avere un formato obbligatorio.

Lo script esterno deve contenere almeno una riga di commento con il seguente formato:

#SANET_META:<title>,<description>[,<nome file icona>]

Esempio:

#!/bin/bash
#SANET_META:Comando esterno,Questo e' un comando esterno di prova,config.png

echo "hello word"

exit 0

Il nome file icona deve essere un nome di file valido contenuto nella directory:

{{SANET_INSTALL_DIR}}/static/webui/images/icons

NOTA: Gli script che non rispettano il formato verranno ignorati e non saranno nemmeno visisbili da interfaccia web.

6.8.3. Permessi di esecuzione

I file con gli script devono accessibili dall’utente del server web (tipicamente “www-data”) e l’utente deve avere i permessi di esecuzione.

6.8.4. Variabili d’ambiente

Quando uno script viene eseguito, Sanet imposta diverse variabili d’ambiente che possono essere utilizzate dallo script per capire su quale risorsa elaborare le informazioni.

La variabile d’ambiente piu’ importante e’ sicuramente:

SANET_RESOURCE_NAME

Contiene il nome della risorsa su cui viene seguito lo script: nome del nodo, nome dell’interfaccia, ecc.

Questo e’ lo script per ottenere l’elenco completo della varibili d’ambiente:

#!/bin/bash
#SANET_META:prova,prova

echo "<pre>"
env | sort

Esempio:

SANET_HOME=/opt/sanet3
SANET_RESOURCE_AGENT_ID=48d262d0743f474f8d225c46adb00e3d
SANET_RESOURCE_AGENT_RUNNINGON=False
SANET_RESOURCE_CLUSTER_DISTINGUISHER=xxxxx
SANET_RESOURCE_CLUSTER_ID=33cdb41ce66e43759bd11a05a7d750ab
SANET_RESOURCE_CLUSTER_INSTANCE=None
SANET_RESOURCE_CLUSTER_ROLE=1
SANET_RESOURCE_CLUSTER_XFORM=xxxxxx
SANET_RESOURCE_DESCRIPTION=
SANET_RESOURCE_DFT_TIMEOUT=3
SANET_RESOURCE_DNS6_NAME=
SANET_RESOURCE_DNS_NAME=
SANET_RESOURCE_ICON=node
SANET_RESOURCE_IP4_MGT=None
SANET_RESOURCE_IP6_MGT=
SANET_RESOURCE_IS_ABSTRACT=False
SANET_RESOURCE_IS_ROUTER=True
SANET_RESOURCE_IS_SWITCH=True
SANET_RESOURCE_KIND=1
SANET_RESOURCE_MONITOREDELEMENT_PTR_ID=5ee66bbcfa7a41b282ac5075a0417f56
SANET_RESOURCE_MTIME=1413198323
SANET_RESOURCE_NAME=xha
SANET_RESOURCE_NODE_ID=5ee66bbcfa7a41b282ac5075a0417f56
SANET_RESOURCE_PARENT_ID=None
SANET_RESOURCE_PRIORITY=0
SANET_RESOURCE_SNMP_COMMUNITY=public
SANET_RESOURCE_SNMP_PORT=161
SANET_RESOURCE_SNMP_V3_AUTHDATA=
SANET_RESOURCE_SNMP_VERSION=1
SANET_RESOURCE__STATE=
SANET_RESOURCE_TENANT_ID=a575bd788451436cbe8cf0582965a035
SANET_RESOURCE_TIMEZONE=Europe/Rome
SANET_RESOURCE_TYPE=node
SANET_RESOURCE_USE_IPV4=True
SANET_RESOURCE_UUID=5ee66bbcfa7a41b282ac5075a0417f56

6.8.5. Avvertenze

Poiche’ lo script viene eseguito direttamente dal server web e’ importante assicurarsi che:

  1. Le operazioni eseguite dallo script non durino troppo a lungo
  2. Le operazioni non stressino eccessivamente la macchina con operazioni pesanti in termini di I/O o carico di CPU.