Redução de Confusões ao Trabalhar em Ambientes Semelhantes em Vários Servidores

1

Muitas vezes tenho que abrir vários terminais de venda ssh de servidores remotos juntos, por exemplo. Dev e teste. Esses caminhos e aplicativos são exatamente semelhantes. E muitas vezes me confundo se eu executo um comando específico destinado a uma janela para o outro.

Por exemplo, eu quero atualizar o svn de um ambiente dev, mas provavelmente executá-lo em um ambiente de teste, o que, se feito, convida a problemas.

Você poderia compartilhar como você controla os terminais precisamente?

    
por Bimal Poudel 25.08.2014 / 21:54

2 respostas

4

Eu uso cores de plano de fundo diferentes para diferentes ambientes:
produção: vermelho - pense antes de apertar enter
testando: amarelo - claro que você quer fazer isso?
dev: green - fique à vontade para enlouquecer

Outro must-have são prompts diferentes, uma boa idéia seria incluir o nome do host.

    
por 25.08.2014 / 22:05
2

Em vez disso, obviamente, no final, é sempre você quem precisa saber quais comandos você está colocando em qual terminal. Agora, você pode fazer várias coisas para distinguir as sessões:

  • use cores diferentes dos terminais (isso inclui cores de fundo). Uma maneira de conseguir isso é fazer com que o terminal use um plano de fundo específico, no entanto, é mais flexível solicitá-lo no shell - provavelmente na sequência do prompt de comando (que você coloca no arquivo de inicialização do shell) (veja abaixo);

  • use diferentes prompts de comando. Isto é geralmente conseguido definindo uma variável de ambiente, e. PS1 - leia a documentação da sua shell sobre o que exatamente precisa ser feito. Use sequências de escape ANSI para introduzir a cor e / ou o posicionamento (note que especialmente o último pode interromper a saída em alguns terminais). / p>

    Um exemplo para o bash poderia ser assim:

    export PS1="^[[31;1m\u@\h:^[[0;1m\w^[[0m "
    

    aqui \u significa nome de usuário, \h para nome do host, \w do diretório de trabalho atual, portanto, isso fornecerá um prompt como este:

    O^[representaocaractereEscape,quevocênormalmenteinserepressionandoCtrl+Ve,emseguida,Esc.Nãosãodoiscaracteres^e[-entãovocênãopodecopiá-lotextualmenteaquieesperarquefuncione.

    Existeminfinitasmaneirasdeajustarisso-comoobjetivodechamaraatençãoparaumterminalparticularmenteperigososemforçardemaisosolhos,usando,e.corvermelhabrilhanteparaoscomandostambémpodeserumaopçãorazoável(vocêprecisariausar^[[0;31;1memvezdeapenas^[[0mnofinaldastringdeprompt).

  • Algunsterminaispodeminterpretaralgumasseqüênciasdeescapecomotítulo-assimvocêpodecolocaroconteúdodopromptnotítulodajanela.Estejacientedequeissointerferiránacapacidadedoshelldequebrarcorretamenteaslinhasdecomando,amenosquevocêdigaaeleparaignoraressasseqüênciasdeescape(issotambéméválidoparacores-embashissoéfeitocolocandoaspartes"zero-width" entre \[ e \] ).

  • Use o multiplexador de terminal nas máquinas remotas (usá-lo localmente também não é uma má idéia). Isso não pode ser superestimado, especialmente para o trabalho remoto que pode salvar um monte de problemas durante quedas de conexão. AFAIK, é possível obter uma linha de status personalizada em screen , mas as pessoas tentam tmux normalmente encontrá-la melhor de todas as maneiras possíveis.

  • alguns shells permitem que você conecte sua própria funcionalidade ao processamento de comandos, portanto, é possível fazer com que o shell pergunte se você realmente tem certeza sobre a execução de um comando específico, antes que ocorra um desastre.

Combine o acima.

    
por 25.08.2014 / 22:42