#!/bin/bash # Module d'analyse de corpus avec envoi sur VM esk et lancement logstash # Script à lancer de preference dans un screen # Date: 28/10/2020 # Correctifs: # 06/11/2020 Prise en compte de chemin de corpus avec espace(s) # 18/12/2020 Adaptation aux machines vp-istex-fsmap et vp-panist2-sisyphe # Auteur: David Castelain # # Debuggage #set -x # Verification du USER if [ $USER != panist ] && [ $USER != istex ]; then echo "Vous devez être loggé en tant que panist ou istex" exit 1 fi # Verification du nombre d'arguments if [ "$#" -eq 3 ]; then if [ $1 = g ]; then analyse_detaillee='n' elif [ $1 = d ]; then analyse_detaillee='o' else echo "SYNTAXE: analyse [g|d] [analysis_name] [corpus_path]" echo "EXEMPLE: analyse g cup-2020-10-05 /work/temp/collex-persee-livraison-11092020" exit 1 fi my_analysis=$2 corpus_path=$3 elif [ "$#" -ne 0 ]; then echo "SYNTAXE: analyse [g|d] [analysis_name] [corpus_path]" echo "SYNTAXE en mode interactif: analyse" exit 1 else # Recuperation des arguments en mode interactif # Type d'analyse echo "Voulez-vous une analyse détaillee (o/n)?" until [[ ${analyse_detaillee} =~ ^[no]$ ]]; do read analyse_detaillee done # Nom de l'analyse echo "Nom de votre analyse?" echo "La première partie doit permettre de trouver un nom de corpusResouces" echo "Exemple: cup-2020-10-05 (ne pas préciser detaillee ou générique)" read my_analysis # Chemin du corpus à analyser echo "Chemin de votre corpus?" echo "Exemple: /work/temp/collex-persee-livraison-11092020" read corpus_path fi if [ ${analyse_detaillee} = n ] then analysis_name=${my_analysis} else analysis_name=${my_analysis}-detaillee fi analysis_json=analyse-${analysis_name}.json logstash_path='\/logstash\/data\/'${analysis_json} logstash_index=analyse-${analysis_name} # Suppression de toutes les clés de la base if [ $USER == panist ]; then docker exec panist-redis bash -c 'redis-cli flushall' else ${HOME}/redis-3.2.5/bin/redis-cli flushall fi # Suppression de tous les processsus node kill -1 `pgrep node` 2>/dev/null # Analyse sisyphe cd ${HOME}/sisyphe if [ ${analyse_detaillee} = n ] then ./app -n ${analysis_name} -s filetype,pdf,xml,xpath,out "${corpus_path}" else ./app -n ${analysis_name} -c ../corpusResources/ -s filetype,pdf,xml,xpath,out "${corpus_path}" fi # Chemin du fichier json genere analysis_file_path=`find ${HOME} -name ${analysis_json}` # Copie du fichier d'analyse sur VM esk scp ${analysis_file_path} istex@vp-istex2-esk.intra.inist.fr:/applis/istex/home/logstash/data/. # Modification du fichier logstash.conf ssh istex@vp-istex2-esk.intra.inist.fr "sed -i.old \ -e 's/index => \"[^\"]*\"/index => \"${logstash_index}\"/' \ -e 's/path => \[\"[^\"]*\"\]/path => \[\"${logstash_path}\"\]/' \ logstash/conf/logstash.conf" # Suppression index elasticsearch du meme nom si existant curl --user kibana:klskv54sdfr654zer --noproxy localhost -XDELETE "http://vp-istex2-esk.intra.inist.fr:9200/${logstash_index}" > /dev/null 2>&1 # Lancement de logstash ssh istex@vp-istex2-esk.intra.inist.fr \ 'cd /applis/istex/home/logstash; \ docker run --rm --network=clusteresk_esnet --link elasticsearch:elasticsearch \ -v "$PWD":/logstash istex-data-logstash:latest -f /logstash/conf/logstash.conf &'