.. _web-external-commands: **************** 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. Installare script esterni ========================= Gli script esterni devono essere posizionani nella directory: :: {{VAR}}//menus// Esempi: :: /var/lib/sanet3/site/menus/node/ping.sh /var/lib/sanet3/a575bd788451436cbe8cf0582965a035/menus/node/ping.sh 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:,<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. 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. 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 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.