qcm

Faire des qcm simplement - retour accueil

git clone git://bebou.netlib.re/qcm
Log | Files | Refs | README |

commit b53f12851d5ae309b694958efbac340f4bac152f
parent f78187719a48d04d404fad2133b914e3758ddd06
Auteurice: Arthur Pons <arthur.pons@unistra.fr>
Date:   Sat,  9 Nov 2024 15:57:22 +0100

Documenter cater dans ssh qcm marche pas

Pourquoi ?

Parce que pour attendre l'input de la personne qui lance le
questionnaire on fait une lecture d'une ligne dans la tty :

	read _ < /dev/tty

Lorsqu'on lance ça en local aucun souci :

	cat questionnaire | qcm

qcm lit le questionnaire depuis stdin mais lorsqu'il rencontre les read
il lit dans la tty. C'est bien l'input dans le terminal (appuyer sur
entrée par ex) qui va donner à manger à read, pas le pipe.

Le souci survient donc lorsque l'on fait ceci :

	cat questionnaire | ssh -t bebou qcm

SSH n'a pas de problème à "brancher" la stdin locale sur celle distante
et permettre aux inputs sur le terminal local de piloter le programme
lancé sur le serveur si la stdin local est un terminal. Sauf que dans
notre cas la stdin est un pipe et donc pas un terminal.

On a le même souci si l'on fait :

	echo "1\n2\n3\n" | ssh -t bebou fzy | tac

On récupère le message

	Pseudo-terminal will not be allocated because stdin is not a
	terminal

Alors quelle solution ? Pour le moment il faut séparer l'opération en
deux. D'abord uploader le fichier puis lancer qcm de façon à ce que
stdin soit la tty locale :

	cat questionnaire | ssh bebou 'cat > questionnaire'
	ssh bebou '< questionnaire qcm'

Ca peut se scripter, c'est pas bien méchant, faut juste éventuellement
se rappeler de supprimer le fichier ensuite.

Je vais tout de même chercher un moyen de le faire en une commande.

Diffstat:
MREADME | 1+
Mqcm.sh | 2+-
2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/README b/README @@ -73,6 +73,7 @@ gnuplot : cat questionnaire.qcm | qcm -g Lancer un questionnaire sur un serveur équipé de `qcm` : +**Ne fonctionne pas encore** cat questionnaire.qcm | ssh -t user@server qcm diff --git a/qcm.sh b/qcm.sh @@ -15,7 +15,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 cat mon-questionnaire.qcm | qcm # lancer le questionnaire .qcm - cat mon-questionnaire.qcm | ssh compte@serveur qcm # le lancer à distance + cat mon-questionnaire.qcm | ssh compte@serveur qcm # le lancer à distance mais ne fonctionne pas encore ! Pour une explication plus détaillée voir le README ou http://arthur.bebou.netlib.re/qcm