Anomalie #3600
ferméAjout du paramètre -t pour ssh dans ./do.sh ?
0%
Description
Fréquemment en faisant un dist-upgrade via le git/script/do.sh, l'action plante quand ça passe en mode interactif.
Au point que je suis obligé de faire un ctrl-c, me connecter sur la vm, tuer le apt-get, lancer un dpkg-reconfigure -a…
Paramétrage de certbot (0.28.0-1~deb9u1) ... Fichier de configuration « /etc/cron.d/certbot » ==> Modifié (par vous ou par un script) depuis l'installation. ==> Le distributeur du paquet a fourni une version mise à jour. Que voulez-vous faire ? Vos options sont les suivantes : Y ou I : installer la version du responsable du paquet N ou O : garder votre version actuellement installée D : afficher les différences entre les versions Z : suspendre ce processus pour examiner la situation L'action par défaut garde votre version actuelle. *** certbot (Y/I/N/O/D/Z) [défaut=N] ? D WARNING: terminal is not fully functional - (press RETURN) N ^C
On me souffle que rajouter un paramètre -t à la commande ssh résoudrait ce problème. Des avis ?
Mis à jour par Quentin Gibeaux il y a presque 6 ans
J'ai lu le man mais j'ai pas compris ce que ça ajoutait : ça change quoi -t dans ce cas précis ?
Mis à jour par Christian P. Momon il y a presque 6 ans
Quentin Gibeaux a écrit :
J'ai lu le man mais j'ai pas compris ce que ça ajoutait : ça change quoi -t dans ce cas précis ?
Le blocage dans le apt-get vient d'un « WARNING: terminal is not fully functional ». Quand on fait "ssh root@foo.foo script", la connexion ssh n'utilise pas un pty pleinement fonctionnel en tant que terminal
Le fait de rajouter le -t, ça force la création d'un tty complet qui acceptera toutes les options d'un terminal dont le mode interactif.
La meilleure explication que j'ai trouvé : https://stackoverflow.com/questions/42505339/why-use-t-with-ssh
To have interactive prompt in your ssh shell, you need to have allocated PTY also on the server side. It is done automatically when you call ssh host. When you allocate this PTY on server, then your local terminal and the remote one are exchanging some additional messages (Terminal control characters), which give the remote shell information about the size of your local terminal, the remote can update title of your window and so on. This is something you really don't want when you want to transfer files or just pass the output "as it is". It would modify that and you would get generally something else. Again, this is done automatically in case you use scp or just noninteractive script as ssh host my_script. So far good. You don't need the switches. But things might not be always so simple. You might want to invoke some interactive shell as a command, for example ssh host /bin/zsh. This would work, but it will not be interactive. In this case, you need to use the -t switch to make it working properly: ssh -t host /bin/zsh.Donc :
- ssh root@foo.foo => création d'un tty
- ssh root@foo.foo ls => création d'un pty
- ssh -t root@foo.foo ls => création d'un tty
Est-ce un peu plus clair maintenant ?
Mis à jour par Quentin Gibeaux il y a presque 6 ans
Et donc ça donnerait la main pour réagir ?
Mis à jour par Christian P. Momon il y a presque 6 ans
A priori, oui. Si on regarde les logs, on voit que lorsque je demande à voir les différences (« D »), c'est là qu'il entre blocage : rien ne s'affiche et les commandes suivantes sont ignorées. Le « N » que je fais n'est pas pris en compte, d'où mon « ^C » (Ctrl-C).
Avec un « -t », on peut espérer qu'il afficherait normalement et continuerait de servir les touches clavier envoyées.
Mis à jour par Christian P. Momon il y a presque 6 ans
À noter que le script update-all-guests.sh utilise déjà l'option « -t » ;D
Mis à jour par Christian P. Momon il y a presque 6 ans
Ajouté, commité, pushé.
commit 17df73518971663265a7f214051716b78c3ab005 Author: Christian Pierre MOMON <cmomon@april.org> Date: Mon Feb 18 15:59:46 2019 +0100 Added -t to ssh, required for interactive apt-get dist-upgrade actions.
Mis à jour par Christian P. Momon il y a presque 6 ans
- Assigné à mis à Christian P. Momon