Faire des qcm simplement - retour accueil
git clone git://bebou.netlib.re/qcm
Log | Files | Refs | README |
commit 600a1db39a918bd5690b9c75af1fd9e52d48e37c parent faf002ed55f61f0c1cc81a190da98cdcf2ec7c98 Auteurice: Arthur Pons <arthur.pons@unistra.fr> Date: Thu, 14 Nov 2024 18:44:08 +0100 Vérifier si l'id du qcm est unique Avec la documentation qui va avec L'avantage de pouvoir choisir l'identifiant c'est qu'il est possible de préparer des pages à l'avance sur la bonne url ! Par contre, puisque pour l'instant on parse les logs juste sur "/id/pattern" si l'un des vhost du serveur a une page du même nom que l'identifiant et qu'elle est consultée lors du questionnaire ça risque d'enregistrer une réponse. Il faudrait peut-être parser sur l'url en supposant que la personne la contrôle mieux (genre sur bebou.netlib.re y'a pas grand chose, on peut même assez facilement checker si y'a pas de collision). Ou alors faut faire un sous dossier genre /qcm/id mais l'url est potentiellement déjà un peu longue. Bon puisque c'est pas un gros souci et que je connais les gens qui l'utilisent je le laisse en plan. Diffstat:
M | README | | | 7 | +++++++ |
M | qcm.sh | | | 15 | +++++++++++++-- |
2 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/README b/README @@ -20,6 +20,7 @@ sur une autre variante Unix-like. * `stdbuf` * un `sed` posix * un `xargs` posix + * un `ps` posix * optionnelle : gnuplot pour faire des graphiques avec -g Testé sous debian 12 et le serveur web nginx packagé pour. Le code @@ -69,6 +70,12 @@ plutôt que celui par défaut (attention il faudra sûrement adapter le code) : $ qcm -l /var/log/httpd/logs +Choisir l'identifiant du questionnaire pour qu'il soit "fraise". N'est pas +garanti de se lancer, il peut exister un questionnaire avec le même identifiant +: + + $ qcm -i fraise + Lire un questionnaire déjà fait depuis stdin et afficher les résultats avec gnuplot : diff --git a/qcm.sh b/qcm.sh @@ -3,11 +3,12 @@ usage() <<-. cat Faire des sondages simples en parsant les logs d'un serveur web - Usage : qcm [-h] [-e] [-u url] [-l logs] [-g] + Usage : qcm [-h] [-e] [-u url] [-l logs] [-g] [-i identifiant] 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) + identifiant par défaut : match la regex [a-zA-Z0-9]{3} Exemples : @@ -15,6 +16,7 @@ usage() <<-. cat qcm -u http://monsite.com # modifier l'affichage de l'url qcm -l /var/log/httpd/logs # changer le chemin du log parcouru qcm -e # masquer les réponses quand elles arrivent, mode "examen" + qcm -i fraise # lancer un questionnaire avec l'identifiant fraise cat mon-questionnaire.qcm | qcm # lancer le questionnaire .qcm cat mon-questionnaire.qcm | ssh compte@serveur qcm # le lancer à distance mais ne fonctionne pas encore ! @@ -140,7 +142,16 @@ while getopts "hegl:u:i:" opt; do done tmpd=$(mktemp -d ${TMPDIR:-/tmp}/qcm.XXX) -[ -n "$i" ] && id="$i" || id=$(echo "$tmpd" | cut -d '/' -f5 | cut -d'.' -f2) +if [ -n "$i" ];then + existingids=$(ps -A -l -f | grep "[ /]qcm " | + grep -o -- '-i [^ ]\+' | + cut -d' ' -f2 | sort | uniq -c) + echo "$existingids" | grep -q " \+[3-9] \+$i" \ + && { echo "id existe déjà"; exit 1; } \ + || id="$i" +else + id=$(echo "$tmpd" | cut -d '/' -f5 | cut -d'.' -f2) +fi alias question:=question; question() question="$*" alias type:=type; type() type="$*"