J'ai cherché et trouvé des questions similaires mais aucune n'était suffisamment précise ni n'a résolu mon problème. Un exemple serait cette question Le démarrage de programmes basés sur des scripts/terminaux distants via ssh donne une erreur (Erreur lors de l'ouverture du terminal: unknown.) que je n'utilise pas ssh
donc -t
ne le fera pas Aidez-moi.
L'exécution de webmin a fonctionné pendant des mois et maintenant j'obtiens cette erreur.
En gros, lorsque je tape nano ou vi dans terminal, j'obtiens le message d'erreur "Erreur lors de l'ouverture du terminal: inconnu".
[user@Host ~]# nano
Error opening terminal: unknown.
[user@Host ~]# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.3 LTS
Release: 16.04
Codename: xenial
[user@Host ~]# nano
Error opening terminal: unknown.
[user@Host ~]#
Comment corriger "Erreur d'ouverture du terminal: inconnue." sur Ubuntu 16.04.3 LTS avec Webmin?
Nouvelle information:
TERM=linux
, ce qui est cohérent avec mon autre serveur, qui exécute tous les mêmes logiciels.Le terminal Webmin n'est pas encore interactif. En fait, c'est une interface en ligne de commande.
Vous pouvez en savoir plus , nous en avons beaucoup discuté.
C'est dans notre todo pour le rendre interactif.
J'ai rencontré ce problème lorsque j'essayais de modifier des fichiers dans initramfs. C’était le seul fil que j’ai trouvé. Au lieu de chercher un autre correctif, j’ai écrit un script python pour créer un simple éditeur de texte qui fonctionne à l’intérieur de initramfs (et d’autres terminaux pauvres en fonctionnalités).
C'est assez simple, n'affiche qu'une ligne à la fois, vous devez donc appuyer de haut en bas pour changer de ligne, de gauche à droite pour déplacer le curseur et entrer pour enregistrer. Rien d'extraordinaire, mais cela semble fonctionner correctement pour des modifications rapides.
Il nécessite uniquement le module readchar: python3 -m pip install readchar
#!/usr/bin/python3
#Edit a text file inside the initramfs (when other text editors don't work)
'''Compile with:
libgcc=$(find /lib -name libgcc_s.so.1 | head -n 1)
libutil=$(ldd /usr/bin/python3 | grep libutil | cut -d ' ' -f 3)
pyinstaller --onefile editfile.py --add-data="$libgcc:." --add-data="$libutil:." --hidden-import readchar
'''
import shutil, sys, readchar
'''
Allow user to edit a line of text complete with support for line wraps and a cursor | you can move back and forth with the arrow keys.
lines = initial text supplied to edit
Prompt= Decoration presented before the text (not editable and not returned)
'''
def text_editor(lines=[], Prompt=''):
term_width = shutil.get_terminal_size()[0] - 1
line_num = 0
if type(lines) in (list, Tuple):
multiline=True
else:
multiline=False
lines=[lines]
text = list(lines[line_num])
ptr = len(text)
Prompt = list(Prompt)
space = [' ']
c = 0
while True:
if ptr and ptr > len(text):
ptr = len(text)
copy = text.copy()
if ptr < len(text):
copy.insert(ptr,'|')
copy = list(str(line_num)) + space + Prompt + copy
#Line wraps support:
if len(copy) > term_width:
cut = len(copy) + 3 - term_width
if ptr > len(copy) / 2:
copy = ['<']*3 + copy[cut:]
else:
copy = copy[:-cut] + ['>']*3
print('\r'*term_width+''.join(copy), end=' '*(term_width-len(copy)), flush=True)
if c in (53,54):
#Page up/down bug
c = readchar.readkey()
if c == '~':
continue
else:
c = readchar.readkey()
if len(c) > 1:
#Control Character
c = ord(c[-1])
#Save current line on line change
if c in (53, 54, 65, 66):
lines[line_num] = ''.join(text)
if c == 65: #Up
line_num -= 1
Elif c == 66: #Down
line_num += 1
Elif c == 68: #Left
ptr -= 1
Elif c == 67: #Right
ptr += 1
Elif c == 54: #PgDn
line_num += 10
Elif c == 53: #PgUp
line_num -= 10
Elif c == 70: #End
ptr = len(text)
Elif c == 72: #Home
ptr = 0
else:
print("\nUnknown control character:", c)
print("Press ctrl-c to quit.")
continue
if ptr < 0:
ptr = 0
if ptr > len(text):
ptr = len(text)
#Check if line changed
if c in (53, 54, 65, 66):
if multiline == False:
line_num = 0
continue
if line_num < 0:
line_num = 0
while line_num > len(lines) - 1:
lines.append('')
text = list(lines[line_num])
else:
num = ord(c)
if num in (13, 10): #Enter
print()
lines[line_num] = ''.join(text)
if multiline:
return lines
else:
return lines[0]
Elif num == 127: #Backspace
if text:
text.pop(ptr-1)
ptr -=1
Elif num == 3: #Ctrl-C
sys.exit(1)
else:
text.insert(ptr, c)
ptr += 1
#Main
if len(sys.argv) == 1:
print("Usage: ./editfile <filename>")
sys.exit(1)
f = open(sys.argv[1], 'r')
strings = f.read().split('\n')
f.close()
strings = text_editor(strings)
#Trim empty lines on end
for x in range(len(strings) -1,0, -1):
if len(strings[x]):
break
else:
strings.pop(-1)
f = open(sys.argv[1], 'w')
f.write('\n'.join(strings)+'\n')
Essayez de lancer/bin/bash, je pense que ça va allouer pseudo tty
Essayez aussi: TERM=linux
puis lancez nano