Faire des qcm simplement - retour accueil
git clone git://bebou.netlib.re/qcm
Log | Files | Refs | README |
commit 6bd4b46175619183f05bd72118de3a26e7a80ecd parent 25896902a1a2beb74929b3a71d465f0d7cca3778 Auteurice: Arthur Pons <arthur.pons@unistra.fr> Date: Fri, 8 Nov 2024 09:48:50 +0100 Disparition -n et -f -f n'existe plus, on lit toujours depuis stdin Si stdin est branché sur un terminal on affiche l'aide, sinon on l'affiche pas (cat | qcm n'affiche donc pas l'aide) -n n'existe plus, on gère ça que via l'écriture du questionnaire Adaptation de la doc en fonction Diffstat:
M | README | | | 38 | +++++++++++--------------------------- |
M | qcm.sh | | | 44 | ++++++++++++++++++++------------------------ |
2 files changed, 31 insertions(+), 51 deletions(-)
diff --git a/README b/README @@ -43,51 +43,35 @@ modifiant la variable `DEST` dans le makefile. ### Créer des questionnaires -Scanner le fichier de log `/var/log/nginx/access.log`, proposer quatre réponses -`ABCD` et afficher l'url http://bebou.netlib.re/$id +La syntaxe des questionnaires est [ici](#le-format-du-fichier-de-questionnaire). + +Lancer la console de création de questionnaire : qcm Pareil mais afficher une autre url (si jamais l'édition du script n'est pas -possible) +possible) : qcm -u http://monsite.com -Comme le premier exemple mais avec six choix (ABCDEF) - - qcm -n 6 - Comme le premier exemple mais scanner le fichier de log `/var/log/httpd/logs` -plutôt que celui par défaut +plutôt que celui par défaut (attention il faudra sûrement adapter le code) : qcm -l /var/log/httpd/logs -Modifier le fichier de log *et* le nombre de questions par défaut - - qcm -n 3 -l /var/log/httpd/logs - Rafraîchir l'affichage plus vite (attention ça peut être un peu lourd en calcul) qcm -r 0.1 -Lancer un questionnaire pré-rempli se trouvant dans le fichier -`questionnaire.qcm` avec un taux de rafraichissement plus lent : - - qcm -r 2 -f ./questionnaire.qcm - -Pareil mais en lisant depuis stdin - - cat questionnaire.qcm | qcm -r 2 -f - - -Ecrire les questions à la volée sans les enregistrer au préalable dans -un fichier (nécessite de bien connaître la syntaxe auparavant : +Lire un questionnaire déjà fait depuis stdin et rafraîchir l'affichage toutes +les deux secondes : - qcm -f - + cat questionnaire.qcm | qcm -r 2 Lancer un questionnaire en local sur un serveur équipé de `qcm` : - cat questionnaire.qcm | ssh -t user@server qcm -f - + cat questionnaire.qcm | ssh -t user@server qcm ### Répondre aux questionnaires @@ -223,8 +207,8 @@ Posera cinq questions en tout. demander demander -Est valide. S'il est lancé avec la commande `qcm -f ./questionnaire.qcm -n 3` -il posera trois questions sans intitulé avec trois options de réponses chacune. +Est valide. Il posera trois questions sans intitulés avec quatre options de +réponses chacune. Si l'on veut créer un questionnaire à la volée et que l'on connaît bien la syntaxe ci-dessus on peut simplement lancer `qcm -f -` et écrire les questions. diff --git a/qcm.sh b/qcm.sh @@ -3,24 +3,23 @@ usage() <<-. cat Faire des sondages simples en parsant les logs d'un serveur web - Usage : qcm [-u url] [-l logs] [-n nombre_questions] [-r temps_de_rafraichissement] [-f fichier_de_questions] + Usage : qcm [-u url] [-l logs] [-r temps_de_rafraichissement] url par défaut : http://bebou.netlib.re (modifiable dans le code) log par défaut : /var/log/nginx/access.log (modifiable dans le code) nombre de question par défaut : 4 (ABCD) temps entre les rafraichissements par défaut : 1 seconde - Si fichier_de_questions est "-" elles seront lues depuis stdin. - Exemples : qcm - qcm -u http://monsite.com - qcm -n 6 + qcm -u http://monsite.com -r 3 qcm -l /var/log/httpd/logs - qcm -f ./mon-questionnaire.qcm - cat mon-questionnaire.qcm | qcm -f - - qcm -f - + cat mon-questionnaire.qcm | qcm + cat mon-questionnaire.qcm | ssh compte@serveur qcm + + Pour une explication plus détaillée voir le README ou + http://arthur.bebou.netlib.re/qcm . playout() { @@ -74,16 +73,17 @@ demander() { while getopts "hl:u:n:r:f:" opt; do case $opt in - ( l | u | n | r | f ) [ ! -z $OPTARG ] && eval "$opt='$OPTARG'" ;; + ( l | u | r ) [ ! -z $OPTARG ] && eval "$opt='$OPTARG'" ;; ( h ) usage; exit ;; esac done url="${u:-http://bebou.netlib.re}" -nbq="${n:-4}" refresh="${r:-1}" logs="${l:-/var/log/nginx/access.log}" file="$f" + +nbq=4 uopt="-u -k1,1" choix= @@ -99,18 +99,14 @@ alias unique:=unique; unique() { [ "$*" = "non" ] && uopt= || uopt="-u -k1 trap "rm -rf $tmpd;exit" INT TERM trap "kill 0" EXIT -if [ -n "$file" ];then - if [ "$file" = "-" ];then - <<-. cat - Ecrivez le questionnaire puis ctrl+D pour le soumettre - syntaxe du questionnaire - http://arthur.bebou.netlib.re/qcm/#le-format-du-fichier-de-questionnaire - . - - cat > "$tmpd/questions" - file="$tmpd/questions" - fi - . "$file" -else - demander +if [ -t 0 ];then + <<-. cat + Ecrivez le questionnaire puis ctrl+D pour le soumettre + syntaxe du questionnaire : + http://arthur.bebou.netlib.re/qcm/#le-format-du-fichier-de-questionnaire + . fi + +cat > "$tmpd/questions" +file="$tmpd/questions" +. "$file"