-
Plugin Pandora
Hola,
He creado un plugin que se encarga de realizar una consulta API sobre un firewall.
Este plugin son una serie de consultas, que se encargan de generar un fichero, leer un valor, volver a realizar una consulta y devuleve otro fichero.
Al final extrae un valor que es lo que devuelve. Si ejecuto este script desde la consola de linux del Pandora funciona perfectamente.
Os cuento el proceso para ver si me podéis ayudar:
Fichero pandora_paloalto2.sh:
#!/bin/bash
# Default values
datetime_old=$(date +”%Y/%m/%d 00:00:01″)
datetime_now=$(date +”%Y/%m/%d %H:%M:%S”)
#echo $datetime_old
#echo $datetime_nowQUERY=”( receive_time geq ‘$datetime_old’ ) and ( receive_time leq ‘$datetime_now’ ) and ( severity eq critical )”
ID=”LUFRPT1Wekxxc2IadfaffxNXBieHRPcDBQR0R2TXRXVklERmc9Zm1tSGVkL3dafafRjK1BGOWxTVzc2MUcyZURYck9qblZtNlRoSUlucUg3bjd3QT0=”
IP=10.0.53.1
function help {
   echo -e “Test Plugin for Pandora FMS Plugin server. http://pandorafms.com”
   echo -e “Syntax:”   Â
   echo -e “tt-p ip”
   echo -e “tt-id id firewall”
   echo -e “tt-q query string ‘n”
   echo -e “Samples:”
   echo ”  ./pandora_paloalto2.sh -p 10.0.53.1 -i dfadfafafafaf -q “( receive_time geq ‘$datetime_old’ )”
   echo “”
   exit
}while getopts ‘i:p:q:’ optname
 do
  Â
   case “$optname” in
     h)
   #   echo “opcion h”
   #   echo $OPTARG
          help
   ;;
     p)
   #  echo “opcion ip”
    # echo $OPTARG
       IP=$OPTARG
       ;;
     i)
   #   echo “opcion id”
   #   echo $OPTARG
      ID=$OPTARG
       ;;
     q)
   #   echo “opcion q”
   #   echo $OPTARG
      QUERY=$OPTARG
      ;;
       ?)
   #   echo “opcion interrogante $OPTARG”
   #   echo “resto de argumentos: $*”
      help
      ;;
     default)
     #   echo “opcion help $OPTARG”
     #   echo “resto de argumentos: $*”
      help
   ;;
   Â
   esac
Âdone
# Execution
#echo “id -> ” $ID
#echo “ip -> ” $IP
#echo “query -> ” $QUERYcurl –tlsv1 -sS -k –data-urlencode “query=$QUERY” “https://$IP/api/?type=log&logtype=threat&nlogs=1000&skip=0&key=LUfgRPT1Wekxxc2IxNXBieHRPcddaddaaaDBQR0fgR2TXRffXVklERffmc9Zm1tSGVkL3RjKdfdf1BGOWxTVzc2MUcyZURYck9qblZtNlRoSUlucUg3bjd3QT0=” > /tmp/fichero.txt
job=$(grep -oPm1 “(?<=)[^<]+"<<< cat /tmp/fichero.txt) #echo "$job" sleep 70 | curl --tlsv1 -sS -k "https://$IP/api/?type=log&action=get&job-id={$job}&key=$ID" > /tmp/log.xml
result=$(cat /tmp/log.xml | grep ‘count=’ | cut -d ‘”‘ -f 2)
echo $result
#echo “fin”#exit 0;
El resultado es 0 o un número > 0
Este fichero lo copio en /usr/share/pandora_server/util/plugin
Le doy permisos 0755 para poder ejecutarlo.
Luego en Pandora voy a Plugins y creo el plugin (adjunto imágenes.)
Luego voy al dispositivo y creo un módulo plug-in. Pero nunca se inicaliza.No sé la causa. He aumentado el tiempo de timeout. Porque le cuesta un poco obtener la información. Pero ya he puesto un comando sleep en el código y desde el cli de linux funciona perfectamente.
No sé, si existe un log donde poder ver lo que hace.
He probado con diferentes tipos de datos num,num_inc,string. En todos los casos no funciona. También he jugado con el time-outs.
Tengo habilitado en el archivo de configuración del servidor Pandora que ejecute los plugins.
Tengo Pandora 6 sp1 y acabo de actualizar a pandora 6 sp6 con el mismo resultado.
AgradecerÃa cualquier tipo de ayuda.
Gracias
Nota: Adjunto imágenes y los valores que hay son inventados.