Existe uma maneira de enviar informações de configuração do shell quando o SSHing é para um host?

5

Eu sei como configurar o prompt dos terminais do GNOME (ou xterms!) para verde / vermelho em relação ao último código de saída:

vi .bashrc

export PROMPT_COMMAND='PS1="'
if [[ \$? = "0" ]];
then echo "\[\033[0;32m\]";
else echo "\[\033[0;31m\]";
fi'[\u@\h \w]\[\e[m\] "'

export PS1

na foto:

mas se eu fizer login em um servidor remoto, essas configurações de cor não funcionarão!

Como posso configurá-lo para trabalhar em terminais remotos também? Infelizmente, não posso anexar as linhas mencionadas aos servidores remotos .bashrc .

    
por LanceBaynes 13.06.2011 / 17:58

2 respostas

6

Você está tentando alterar o prompt exibido pelo shell remoto. Isso, obviamente, requer a alteração do arquivo de configuração do shell remoto, ou seja, .bashrc .

Se você não quiser alterar o arquivo, e realmente precisar usar essa conta compartilhada (inserir resmungos obrigatórios sobre contas compartilhadas), e você estiver fazendo login no ssh, você pode (ab) usar o command= opção no ~/.ssh/authorized_keys arquivo . Uma chave com uma opção de comando é boa apenas para executar o comando especificado; mas o comando no arquivo authorized_keys é executado com a variável de ambiente SSH_ORIGINAL_COMMAND definida para o comando especificado pelo usuário (vazio para sessões interativas). Então você pode usar algo assim em ~/.ssh/authorized_keys :

command="HOME=$HOME/.HOME.lance;
         if [ -n \"$SSH_ORIGINAL_COMMAND\" ]; then
           eval \"$SSH_ORIGINAL_COMMAND\";
         else exec \"$SHELL\"; fi" ssh-rsa AAAA…== [email protected]

Note que coloquei as quebras de linha acima para legibilidade, mas isso realmente precisa estar em uma linha no arquivo authorized_keys .

Em seguida, coloque seus arquivos de configuração favoritos nesse diretório .HOME.lance .

Para uso ocasional, você pode fornecer explicitamente um arquivo de perfil ou executar qualquer comando shell. Passe a opção -t para ter um terminal se você quiser executar comandos interativos.

ssh shared-account@server "LS_COLORS='$LS_COLORS' ls --color"
ssh -t shared-account@server '. ~/.profile.drew; exec zsh'

Se você quiser apenas editar ou copiar arquivos na máquina remota, poderá usar um sistema de arquivos de rede, como SSHFS (para clientes unix) ou Tramp (para Emacs) e trabalhe no conforto do seu ambiente local.

    
por 13.06.2011 / 23:44
0

Quando você faz login em um sistema remoto, recebe um novo shell. Especificamente, um shell no sistema REMOTE. Para ter suas preferências de shell favoritas em uma máquina diferente, você também terá que definir suas preferências nessa máquina. Isso significa que você terá que configurar o prompt do shell de comando do prompt no arquivo .bashrc no site remoto. Ele foi projetado dessa maneira.

Como nota lateral, é possível que, quando você faz login em uma máquina remota, a máquina remota assuma que você tem um terminal com menos capacidade do que você. Se o seu PS1 estiver correto, tente também configurar sua variável TERM quando você entrar na nova máquina. As máquinas remotas muitas vezes assumem um terminal bastante idiota para todos os logins remotos, mas na maioria das vezes suportam decentes e você pode forjá-lo para usar configurações razoáveis, mas forçando essa variável de ambiente a algo capaz como o xterm-color.

    
por 13.06.2011 / 18:03