2 votes

Comment lier une touche à une macro dans GNU screen à partir de la ligne de commande ?

El Écran GNU est doté d'une fonctionnalité intéressante permettant de lier les touches à l'utilisateur. screen des commandes ou des macros. Le site stuff est particulièrement pratique pour étendre une abréviation à une autre chaîne de caractères pendant que vous tapez.

Par exemple, si je suis dans screen et j'utilise ma clé méta ([ Ctrl - A ] par défaut) suivi de :bindkey -t #@@ stuff "set -o vi; bind C-l:clear-screen C-i:complete" ... alors ##@ devient un moyen rapide de modifier les paramètres d'une bash Shell à mes préférences même lorsque j'utilise un compte partagé (par exemple lorsque j'ai utilisé sudo pour accéder à la racine Shell sur un serveur en essayant de le dépanner ou de le réparer).

C'est génial et vous pouvez ajouter ces sortes de liens dans votre ~/.screenrc fichier.

Mais si vous voulez créer une macro pour quelque chose de plus sensible ... un mot de passe par exemple ... alors vous pouvez ajouter une liaison de clé à votre exécution. screen sans stocker le contenu dans un fichier, où que ce soit.

Comment faites-vous ?

On pourrait penser qu'il est facile d'utiliser la fonction screen -X (X majuscule) qui prend une commande. Mais les tentatives évidentes de le faire échouent :

screen -X 'bindkey -t #@p stuff mysecretpasswordhere'

Ensuite, le screen la barre d'état s'allume brièvement avec une erreur du type -X : commande inconnue ...

Pourquoi ce message d'erreur est-il si peu utile ?

0 votes

Existe-t-il un moyen équivalent de faire cela sous tmux ?

2voto

YourMomzThaBomb Points 398

J'ai compris ça plusieurs fois maintenant. La première fois, c'était il y a quelques années et je l'ai utilisé pendant longtemps. Puis, j'ai dû le découvrir à nouveau ce matin. C'est pourquoi je l'affiche ici. Ainsi, je pourrai le retrouver plus facilement la prochaine fois que j'en aurai besoin, si je ne m'en souviens pas mieux.

Le problème est que -X n'accepte pas et n'analyse pas un seul argument comme une commande entière. Il exige que vous passiez chacun des éléments de la commande comme un argument séparé à la commande screen ligne de commande.

Donc ça marche :

screen -X bindkey -t '#@p' stuff "mysecretpasswordhere"

... et voici comment je l'utilise depuis un Shell Shell :

#!/bin/bash
read -sp "GNU Screen PW Setting:" pw
echo 
screen -X 'bindkey' '-t' '#@p' 'stuff' "$pw"

Ensuite, lorsque je démarre un nouveau GNU screen (une fois tous les quelques mois, typiquement), puis je lance tout simplement ~/bin/setpw pour stocker mon mot de passe en mémoire sans jamais l'écrire dans un fichier quelconque.

(Oui, la séquence de touches à laquelle je le lie a été aseptisée pour cette publication. Duh ! De plus, oui, je suis très cohérent quant à l'utilisation du verrouillage d'écran sur mes systèmes et le mot de passe est long, fort et donc peu pratique à taper. sudo toute la journée).

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