Putty: login, execute a variável de ambiente command / change e NÃO feche a sessão

3

Eu gostaria de configurar minha sessão do PuTTY de forma que eu pudesse logar em um host remoto, e (a) iniciar o bash (b) alterar a variável PS1 (conteúdo do prompt) (c) continuar o trabalho na sessão como normal.

Eu tentei:

  1. Conexão - > Dados - > Variáveis de ambiente [não funciona; sessão parece como se (b) não tivesse sido executado] AND
  2. Conexão - > SSH - > Comando remoto: PS1="algumas coisas" [a janela com a sessão é aberta por uma fração de segundo, e então fecha]

Alguma ideia? Eu tinha tido um olhar para algumas questões semelhantes no fórum, mas não encontrei nada de útil.

Mais geralmente: faço login em um host no qual muitos usuários fazem login como um único usuário e, assim, todos compartilham as "configurações" do usuário único. Eu procuro um método de forçar PuTTY a alterar temporariamente algumas dessas configurações (ou seja, de modo que elas fiquem limitadas à sessão que abro usando o PuTTY). Tipo de execução da versão pessoal do .bashrc dentro da sessão. Espero que isso faça sentido.

    
por Simon Righley 29.01.2014 / 17:09

3 respostas

2

O servidor de destino precisa ser configurado para aceitar as variáveis de ambiente de configuração para que a primeira opção funcione. O segundo está realmente funcionando bem, o problema é que ele é projetado para imitar

ssh user@foo command

que apenas conectará, executará command e sairá. Você pode mantê-lo aberto, dando-lhe command; bash , mas isso não funcionará para definir suas variáveis. Um novo shell será iniciado depois que a variável for definida.

Portanto, além de ter acesso root ao servidor para que você possa ativar a configuração de variáveis ambientais, a única maneira que posso pensar em fazer isso é editar ~/.bashrc do servidor e definir seu PS1 lá. Adicione esta linha a ~/.bashrc :

PS1="some stuff"

Agora, toda vez que você fizer login nesse servidor, o prompt será definido para você.

Outra maneira de fazer isso seria usar um arquivo rc diferente para sua sessão bash. Crie um novo arquivo com estas linhas:

source /etc/profile
source ~/.bashrc
PS1='some stuff'

Salve-o como, por exemplo, ~/.myps1 e, em seguida, em suas configurações de massa, defina o comando para ser executado no servidor remoto para:

bash --rcfile ~/.myps1

Isso abrirá uma nova sessão de shell no servidor remoto e lerá o arquivo acima, que primeiro lê .bashrc e depois define PS1 .

    
por 29.01.2014 / 17:36
0

Tente definir o comando remoto para algo como export PS1='foo'; /usr/bin/bash ... que deve gerar uma sessão bash depois de definir o PS1.

    
por 29.01.2014 / 17:54
0

Para aqueles que não podem modificar a configuração do sshd por vários motivos e / ou possuem +2000 servidores (e nenhum acesso a ferramentas de configuração em massa ou não podem / não querem alterar configurações para outros usuários), aqui está uma solução Eu inventei:

NoPuTTY,carregueasessãodesejada,váparaConnection>SSH.Naseção"Dados para enviar ao servidor", no campo "Comando remoto", use:

env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...] bash

Exemplo:

env -u PS1 PS1="[\u@\h]\$ " bash

Eu desconfio a variável primeiro, porque não funcionou de outra forma.

    
por 20.05.2018 / 11:33