Alterando as cores do terminal ao transferir para a máquina remota e vice-versa

8

Procurando uma maneira de alterar automaticamente as cores dos terminais ao fazer a transferência para a máquina remota e voltar às cores padrão ao sair da sessão ssh. Simplesmente, quero ter outras cores quando estiver trabalhando na máquina remota.

Qualquer ideia?

ps: não quero usar o iTerm2, mas o Terminal.app padrão

kobame
fonte

Respostas:

9

Eu estou usando o seguinte.

Tenha um comando shell, chamado myssh, com conteúdo:

PROFILE="$1";shift;
DEF="Basic" #the default profile name
echo "tell app \"Terminal\" to set current settings of first window to settings set \"${PROFILE}\""|osascript
ssh $@
echo "tell app \"Terminal\" to set current settings of first window to settings set \"${DEF}\""|osascript

e use aliases de bash para a conexão, como:

alias ssweb='myssh Homebrew [email protected]'
alias ssmail='myssh Ocean [email protected]'

Quando eu quero ssh no servidor web, simplesmente escrevo sswebno Terminal e recebo o perfil "Homebrew". Quando a sessão ssh termina, o AppleScript volta ao "Básico".

Os aliases devem entrar no seu arquivo $ HOME / .profile ou similar do bash-startup.

Os "Homebrew", "Ocean" etc. são os perfis de configuração das preferências do Terminal.app. Você também pode configurar diferentes fontes, codificações, etc.

Obviamente, você pode usá-lo diretamente (sem aliases) como:

myssh Pro user@another.machine.example.com
       ^        ^
       |        ssh command arguments
       terminal profile name
jm666
fonte
como você faria isso para iterm2? obrigado!
Cosu
Eu parei de usar iTerm quando em "vim" depois de selecionar algum texto é cortado da seleção em vez de cópia ..; (Então, Infelizmente, eu não tenho nenhuma idéia sobre solução iTerm2.
jm666
Obrigado! Estive estudando várias maneiras arrogantes de fazer isso por um tempo, mas seu método é simples e flexível. Pontos de bônus pelo desenvolvimento de uma pequena estrutura que pode receber perfis e comandos de diferentes aliases, em vez de espalhar um monte de scripts individuais com conjuntos de preferências codificados.
Oct
2

Eu sei que já existem algumas respostas, mas aqui está uma alternativa:

Não existe uma maneira geral de alterar a cor do plano de fundo, mas podemos usar uma maneira padrão de alterar o título da janela. Se você estiver efetuando login em vários dispositivos que não sejam "servidores Unix" (como dispositivos de rede; roteadores, comutadores, firewalls etc.), precisará usar seus shells e não poderá instalar suas próprias variáveis ​​de shell. Então, aqui está outra maneira:

function ssh() {
  H=$(echo $@ | sed -e 's/.*@//g;s/ .*//g')
  echo $@ | grep '@' && U=$(echo $@ | sed -e 's/@.*//g;s/.* //g')
  echo -ne "\033]0;${U:=$(whoami)}@${H%%.*}\007"
  unset H
  unset U
  /usr/bin/ssh $@
}

Adicione isso ao seu .bashrc.

Basicamente, como as funções e aliases são preferidos à procura no caminho, isso pega o comando ssh e usa o texto antes e depois do "@" para definir as variáveis ​​HOST e USER que ele usa para ecoar um código ASCII que é reconhecido pelo terminal e usado para definir o título.

Você deve usar "ssh [email protected]" para isso e não "ssh -l user host.blah"

Se você não fornecer um nome de usuário, ele será definido como seu nome de usuário atual (obviamente, se você estiver usando um .ssh / config personalizado (que eu uso muito), isso não será preciso, mas acho que é bom o suficiente Ser útil.

wawawawa
fonte