Project

General

Profile

Anomalie #3600

Ajout du paramètre -t pour ssh dans ./do.sh ?

Added by Christian P. Momon 6 months ago. Updated 3 months ago.

Status:
Fermé
Priority:
Normale
Category:
-
Target version:
Start date:
02/17/2019
Due date:
% Done:

0%

Difficulté:
2 Facile

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 ?

History

#1 Updated by Quentin Gibeaux 6 months ago

J'ai lu le man mais j'ai pas compris ce que ça ajoutait : ça change quoi -t dans ce cas précis ?

#2 Updated by Christian P. Momon 6 months ago

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 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 :

Est-ce un peu plus clair maintenant ?

#3 Updated by Quentin Gibeaux 6 months ago

Et donc ça donnerait la main pour réagir ?

#4 Updated by Christian P. Momon 6 months ago

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.

#5 Updated by Quentin Gibeaux 6 months ago

on peut tenter ça

#6 Updated by Christian P. Momon 6 months ago

À noter que le script update-all-guests.sh utilise déjà l'option « -t » ;D

#7 Updated by Christian P. Momon 6 months ago

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.

#8 Updated by Christian P. Momon 6 months ago

  • Status changed from Nouveau to Résolu

#9 Updated by Christian P. Momon 6 months ago

  • Assignee set to Christian P. Momon

#10 Updated by Quentin Gibeaux 3 months ago

  • Status changed from Résolu to Fermé

Also available in: Atom PDF