2 votes

Impossible de taper le caractère accentué "é" via SSH

J'ai deux QNAP que je peux connecter en utilisant SSH :

  • TS-412
  • TS-851

Sur le TS-851, juste après la connexion, si je tape "é" sur mon clavier, il affiche "é" à l'écran. De l'autre côté, le TS-412 n'affiche pas le caractère à l'écran. Je ne peux donc pas accéder à quoi que ce soit qui contienne des caractères accentués (toujours via SSH).

J'ai fait des recherches et tout ce que j'ai trouvé concernait un problème de SMB, mais ce n'est pas mon cas. Les dossiers partagés apparaissent correctement. La liste des dossiers via SSH affiche tous les caractères accentués. Mais en tapant et en collant l'un d'eux, on n'accède pas à la boîte. Même l'auto-complétion des chemins d'accès supprime les caractères accentués.

Les paramètres locaux sont les mêmes dans les deux cas. Tout semble identique, mais il est clair que quelque chose ne l'est pas.

Je sais que QNAP a sa propre version de Linux et j'ai déjà demandé dans leurs forums, mais au cas où quelqu'un ici le saurait. En effet, je pense que ce problème ressemble plus à un problème Linux générique (je ne dis pas que c'est le cas partout, mais ce n'est pas spécifique aux QNAP).

C'est vraiment ennuyeux !

Edit #1 - Répondre aux questions

Exécution de locale sur mon PC :

LANG=C.UTF-8
LANGUAGE=
LC_CTYPE="C.UTF-8"
LC_NUMERIC="C.UTF-8"
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY="C.UTF-8"
LC_MESSAGES="C.UTF-8"
LC_PAPER="C.UTF-8"
LC_NAME="C.UTF-8"
LC_ADDRESS="C.UTF-8"
LC_TELEPHONE="C.UTF-8"
LC_MEASUREMENT="C.UTF-8"
LC_IDENTIFICATION="C.UTF-8"
LC_ALL=

Exécution de locale sur le TS-412 :

LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

Exécution de locale sur le TS-851 :

LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

Sortie pour echo $TERM $SHELL identique sur toutes les machines :

xterm-256color /bin/bash

Sortie pour uname -a sur mon ordinateur, TS-412, TS-851 (dans l'ordre) :

Linux COMPUTER_NAME 5.10.102.1-microsoft-standard-WSL2 #1 SMP Wed Mar 2 00:30:59 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

Linux QNAP_TS_412_NAME 3.4.6 #1 Thu Nov 24 07:58:16 CST 2022 armv5tel unknown

Linux QNAP_TS_851_NAME 5.10.60-qnap #1 SMP Thu Jan 12 01:41:46 CST 2023 x86_64 GNU/Linux

Tous les appareils sont à jour avec leur dernière version, mais le TS-412 et le TS-851 ne sont pas de la même version, car le TS-421 est trop vieux pour être mis à jour avec la version 5.

Version TS-412 : 4.3.3.2211

TS-851 version : 5.0.1.2277

Edit #2 - Patch

Je peux contourner le problème en écrivant un script faisant ce que je veux exécuter et contenant des caractères accentués, puis en l'exécutant. Cela fonctionne, mais... ce n'est pas pratique.

Edit #3 - Nouveaux tests

locale -a

Il donne les mêmes résultats sur les deux QNAP :

C
en_US.utf8
POSIX

cat Test

Dactylographie cat <Enter> <é> le caractère apparaît. <CTRL+D> le caractère apparaît à nouveau. <CTRL-D> , cat a quitté le pays.

vi Test

Lorsque je lance vi Je peux taper é et il apparaît.

Les deux derniers tests m'indiquent qu'il y a quelque chose dans la ligne d'entrée Shell qui bloque certains caractères.

2voto

Master DJon Points 141

J'ai trouvé une solution avec l'aide de @KamilMaciorowski

Modifier /etc/inputrc pour inclure set convert-meta off l'a fait.

En raison du système d'exploitation spécial de QNAP, cette modification n'a pas survécu au redémarrage. https://wiki.qnap.com/wiki/Running_Your_Own_Application_at_Startup et en faisant le script pour modifier le fichier en conséquence, ça marche !

Il y a cependant un problème, mais il est suffisamment mineur pour que l'on s'en accommode pour l'instant :

Type é Je dois revenir deux fois en arrière pour effacer le caractère. Donc.. :

[user@QNAP_NAME ~]$ echo "ABé"
ABé
[user@QNAP_NAME ~]$ echo "AB" ==> DID one backspace
AB�
[user@QNAP_NAME ~]$ echo "A" ==> No "é"
A
[user@QNAP_NAME ~]$ echo "A" ==> Typed "A", "B", "é", two backspaces
AB

Donc, ce que l'on voit ne reflète plus la vraie corde, mais bon, n'effacez pas et ça ira !

Si quelqu'un trouve/sait pourquoi, je modifierai ma réponse.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X