#!/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 ../corpus-resources/ -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 &'