Como definir o nome da guia para um hostname alias do host remoto ao qual estou conectado?

3

Como você deve saber, por padrão, o nome do host de uma instância da AWS é algo como ip-12-34-56-78.us-west-2.compute.internal , então quando eu ssh para esse host, o nome da guia é alterado para root@ip-12-34-56-78 (um pouco difícil identificar qual é qual).

Como tenho o seguinte no ~/.ssh/config :

Host mail.domain.com
    Hostname 1.2.3.4
    User root

Host web.domain.com
    Hostname 5.6.7.8
    User root

Eu estou querendo saber que existe alguma maneira de alterar o nome da guia para o hostname "alias" do host remoto que eu estou conectado (em vez do hostname "real"):

MinhasconfiguraçõesatuaisdePS1:

PS1='[\u@\h\W$(__git_ps1" (%s)")]\$ '

Eu tentei adicionar um wrapper ssh em ~/.bashrc :

ssh() {
    echo -ne "3]0;${@: -1}
# echo $PS1
[\u@\h \W]\$
7" exec ssh $@ }

, em seguida, . ~/.bashrc e teste executando ssh web.domain.com :

  • enquanto conectando : o nome da guia é alterado para web.domain.com , conforme esperado
  • quando conectado : ele é substituído por root@ip-5-6-7-8

Por quê? Há algo relacionado a PS1 aqui?

ATUALIZAÇÃO Sex 6 de junho 21:58:04 ICT 2014

Há algo muito estranho acontecendo: parece que isso aconteceu apenas com a instância do AWS. Com outros hosts, o nome da guia permanece após o login.

PS1 na instância do AWS:

~ echo $PS1
\[\]\[\][\[\]\t\[\]] \u\[\]@\[\]\h\[\]\[\]:\[\]\w\[\] \[\]

PS1 nos outros anfitriões:

Host mail.domain.com
    Hostname 1.2.3.4
    User root

Host web.domain.com
    Hostname 5.6.7.8
    User root

Eu também tentei definir a variável PS1 na AWS como o valor do host funcional, mas isso não ajudou.

    
por quanta 06.06.2014 / 07:30

1 resposta

2

Isso deve ocorrer porque, ao efetuar login na sessão do shell remoto, o PS1 desse servidor está enviando de volta a mesma seqüência de comando 3]0;title%code%7 , o que faz com que o programa do terminal intercepte e exiba adequadamente. Você realmente não tem nenhum efeito de editar seu PS1 na estação de trabalho local.

Eu tive uma exigência semelhante e o que fiz foi no bashrc do shell remoto, eu coloquei algo como o seguinte

PS1="3]0;(tools)
PS1="3]0;(tools)%pre%75[\u@\h \W]# "
75[\u@\h \W]# "

As ferramentas são o nome designado pelo qual eu quis identificar o título. Efetivamente, o título mostra isso corretamente no terminal, e o prompt de comando é o que eu tenho normalmente.

    
por 06.06.2014 / 16:39