#!/bin/bash # Initialisation des variables pour les options programme=$(basename $0) substitut=$(echo $programme | sed 's/./ /g') version='1.3.1' modif='25/07/2022' function usage { echo "Usage : $programme -s sid [ -j cookie_jar ] " echo " $programme -h " } function aide { cat << EOT Usage ===== $programme -s sid [ -j cookie_jar ] $programme -h Options ======= -h affiche cette aide -j indique le nom du fichier qui recevra les cookies (“cookies.txt” par défaut) -s indique le jeton d’authentification “SID” obtenu avec le programme d’authentification à l'API WoS EOT exit 0 } function nettoie { if [[ -f close$$.xml ]] then rm -f close$$.xml fi } # Déclaration explicite du tableau “liste” declare -a liste # Options while getopts hj:s: i do case $i in h) aide;; j) cookiejar=$OPTARG;; s) sid=$OPTARG;; \?) echo >&2 usage >&2 exit 1;; esac done # Vérification des options if [[ -z $sid ]] then echo "Erreur : option manquante" >&2 echo "" >&2 usage >&2 echo "" >&2 exit 2 fi if [[ -z $cookiejar ]] then cookiejar='cookies.txt' fi # Vérification de la présence des programmes # “curl” et “xmllint” for i in curl xmllint do prog=$(which $i 2> /dev/null) if [[ -z $prog ]] then echo "" >&2 echo "Erreur : programme “$i” introuvable. Vérifier \$PATH." >&2 echo "" >&2 exit 2 fi done # Nettoyage en cas d’arrêt prématuré trap nettoie HUP INT QUIT TERM # Définition des fichiers de sortie out='WosApiOut.txt' err='WosApiErr.txt' cat << EOT > close$$.xml <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:auth="http://auth.cxf.wokmws.thomsonreuters.com"> <soapenv:Header/> <soapenv:Body> <auth:closeSession/> </soapenv:Body> </soapenv:Envelope> EOT curl -X POST -d @close$$.xml -b $cookiejar -c $cookiejar -v 'http://search.webofknowledge.com/esti/wokmws/ws/WOKMWSAuthenticate?wsdl' \ -H "Cookie: SID=$sid" 2> $err | xmllint -format - > $out msg=$(perl -ne 'print "$1" if m|<faultstring>(.+?)</faultstring>|;' $out) if [[ -n $msg ]] then echo " " >&2 echo "Erreur : $msg ">&2 echo " " >&2 nettoie exit 3 else echo " " >&2 echo "Fermeture de session réussie " >&2 echo " " >&2 fi nettoie exit 0