Como vinculo uma chave a uma macro na tela GNU a partir da linha de comando?

2

O utilitário Tela GNU tem um recurso interessante para vincular chaves a comandos screen ou macros. O comando stuff é particularmente útil para expandir alguma abreviação para alguma outra string conforme você digita.

Por exemplo, se eu estiver em screen e usar minha meta key ([ Ctrl - A ] por padrão) seguido por :bindkey -t #@@ stuff "set -o vi; bind C-l:clear-screen C-i:complete" ... então ##@ se torna uma maneira rápida de definir as configurações de alteração de bash shell para minhas preferências mesmo quando eu uso uma conta compartilhada (por exemplo, quando usei sudo para chegar ao shell raiz em um servidor ao tentar para solucionar problemas ou corrigi-lo).

Isso é ótimo e você pode adicionar esse tipo de ligação ao arquivo ~/.screenrc .

Mas se você quiser criar uma macro para algo mais sensível ... uma senha, por exemplo ..., convém adicionar uma associação de chave à sua sessão screen sem armazenar o conteúdo em nenhum arquivo, em qualquer lugar .

Como você faz isso?

Você pensaria que seria fácil usar o switch screen -X (capital X) que recebe um comando. Mas as tentativas óbvias de fazer isso falham:

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

Em seguida, a barra de status screen acende-se brevemente com um erro como -X: comando desconhecido ...

Por que essa mensagem de erro é tão inútil?

    
por Jim Dennis 04.02.2015 / 23:15

1 resposta

1

Eu descobri isso algumas vezes agora. A primeira vez foi há alguns anos e foi algo que usei durante muito tempo. Então eu tive que descobrir de novo esta manhã. É por isso que estou postando aqui. Assim, pode encontrá-lo mais facilmente na próxima vez que precisar, se não me lembrar melhor.

O problema é que -X não aceita e analisa um único argumento como o comando inteiro. Isso requer que você passe cada um dos elementos do comando como um argumento separado para a linha de comando screen .

Então, isso funciona:

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

... e é assim que eu uso de um script de shell:

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

Então, quando eu inicio uma nova sessão do GNU screen (uma vez a cada poucos meses, tipicamente) então eu simplesmente executo ~/bin/setpw para armazenar minha senha na memória sem nunca escrevê-la em nenhum arquivo em lugar algum.

(Sim, a seqüência de teclas real para a qual estou vinculando foi sanitizada para esta postagem. Duh! Além disso, sim, sou muito consistente em usar o bloqueio de tela em meus sistemas e a senha é longa, strong e inconveniente estar digitando em sudo prompts o dia todo).

    
por 04.02.2015 / 23:22

Tags