Posso alterar meu plano de fundo do terminal com base no nome do host?

15

Gostaria de alterar a cor do plano de fundo do meu terminal com base no nome do host. Meu raciocínio para isso é principalmente para ter uma maneira extra de me lembrar de qual servidor eu estou, então eu não faço algo estúpido.

Existe alguma maneira que eu posso usar o fundo padrão da beringela se eu estiver na minha máquina local, e então mudar o vermelho se eu ssh em um servidor web de produção, ou outros hosts que eu possa especificar?

    
por chris 17.10.2011 / 19:24

4 respostas

7

Parece que não há nenhuma funcionalidade em gnome-terminal para adicionar uma nova guia a uma janela existente da linha de comando. Mas existem algumas opções para realizar o que você deseja.

Por perfil de comando

Crie um novo perfil gnome-terminal para cada host no qual você fará o SSH. Se você tiver apenas alguns hosts aos quais você se conecta regularmente, isso pode ser o mais simples. Cada perfil pode ter um título diferente, cor de primeiro plano, cor de fundo, comando personalizado e outras configurações definidas. Então você pode usar File -> Open Tab para abrir uma nova aba com o perfil selecionado.

Perfil reutilizável

Crie um novo perfil gnome-terminal que será usado para abrir uma nova janela cada vez que você quiser se conectar a um host SSH diferente (baseado neste Resposta do AskUbuntu que Stefano apontou). Isso funcionaria bem se você se conectasse a muitos hosts diferentes com freqüência. Isso não permitirá que você diferencie entre as diferentes gnome-terminal janelas nas quais você está conectado a diferentes hosts unicamente nas cores de fundo / primeiro plano, mas você terá um título diferente por janela.

  1. Crie um novo perfil gnome-terminal ( File -> New Profile ) com base no perfil Default e chame-o de "RemoteHost" (observe que não há espaços em "RemoteHost" para facilitar os comandos).
  2. Na guia Title and Command , altere:
    1. Initial title: para "Host remoto"
    2. When terminal commands set their own titles: to Replace initial title
  3. Na guia Colors , altere:
    1. Desmarque Use colors from system theme
    2. Build-in schemes: to Custom
    3. Text color: e Background color: às cores de sua escolha. Lembre-se de que alguns comandos (como ls ) usam cores para sua saída e você não deseja escolher cores que dificultem a leitura da saída.
  4. Clique no botão Close para salvar seu novo perfil.
  5. Agora você pode abrir uma nova janela gnome-terminal para cada host SSH remoto usando o comando gnome-terminal --window-with-profile=RemoteHost -t "Some Remote SSH Host" -x ssh user@somehost . A opção -t define o título da janela gnome-terminal e a opção -x executa o restante da linha de comando no terminal. Você pode até criar um alias para reduzir o total de teclas digitadas.

Linha de Comando

Eu encontrei esta entrada de blog com o seguinte script que usa os comandos xdotool e wmctrl (eles não eram ' t instalado por padrão no Ubuntu, então você pode precisar instalá-los primeiro) para usar o atalho de teclado gnome-terminal Ctrl + Deslocamento + t para abrir uma nova guia na janela gnome-terminal atual. Poderia ser modificado para abrir uma nova aba com um perfil específico e executar algum comando para você.

#!/bin/bash
# Path: /usr/local/bin/gnome-terminal
if [ "x$*" != "x" ]; then
  /usr/bin/gnome-terminal "$@"
else
  pgrep -u "$USER" gnome-terminal | grep -qv "$$"
  if [ "$?" == "0" ]; then
    WID='xdotool search --class "gnome-terminal" | head -1'
    xdotool windowfocus $WID
    xdotool key ctrl+shift+t
    wmctrl -i -a $WID
  else
    /usr/bin/gnome-terminal
  fi
fi

Outro

Você pode ser criativo e tentar outras coisas.

Este SuperUser answer basicamente usa um pouco de acrobatas" script-fu "para criar um perfil gnome-terminal temporário que é usado para abrir uma nova janela. Pode ser modificado para seu uso.

Você provavelmente poderia usar este StackOverflow Q & A e mais acrobatas "script-fu" para alterar dinamicamente o gnome-terminal title sempre que você SSH para um host remoto. Não seria tão proeminente quanto as alterações de cor de fundo / primeiro plano, mas seria melhor do que um título Terminal padrão o tempo todo.

    
por 18.10.2011 / 16:28
7

Você pode usar a opção localcommand do ssh / config para executar um comando sempre que um alias for usado. Eu uso

host hostname
    user myusername
    localcommand xtermcontrol --bg '#abc'

Isso depende do xtermcontrol e seu termo é xterm. Presumivelmente, existem outros aplicativos para outros termos.

O único problema com essa abordagem é que isso acontece quando você chama o ssh. Não há nada para desfazer a mudança de cor. Eu fiz isso envolvendo uma função em torno do ssh, mas isso também tem suas desvantagens.

function ssh() {
  FG=$(xtermcontrol --get-fg)
  BG=$(xtermcontrol --get-bg)
  $(which ssh) "$@"
  xtermcontrol --fg="$FG"
  xtermcontrol --bg="$BG"
}
    
por 20.12.2013 / 20:48
5

Isso funcionará no Gnome, se você estiver disposto a usar uma nova janela do terminal gnome para cada sessão ssh.

  1. Crie um novo perfil (com cor de fundo diferente) chamado "Remoto"

  2. Insira o seguinte em .bash_aliases ou .bashrc

    ### add to .bash_aliases, for differentiating between local and remote hosts 
    sshhelper() {
       gnome-terminal --window-with-profile=Remote -x bash -c "ssh $1";
    }
    alias sshc=sshhelper
    

Agora, sshc remote-machine abre uma nova sessão do terminal gnome com o perfil "Remoto". isso diferenciará entre perfis locais e remotos.

Para acomodar vários perfis / hosts, crie vários perfis e coloque algo assim em .bash_aliases :

### add to .bash_aliases, for differentiating between multiple remote hosts
sshhelper() {
    HOST='echo $1 | cut -d'@' -f2'

    case $HOST in
        Production )  PROFILE="Red" ;;
        Test )        PROFILE="Green" ;;
        # ... if you have more cases ...
        *)           PROFILE="Default" ;;
    esac

    gnome-terminal --window-with-profile=$PROFILE -x bash -c "ssh $1";
}

# alias ssh=sshhelper    # this will "override" the ssh command, but may break other stuff!
alias sshc=sshhelper

Agora, sshc Production abrirá uma nova janela de sessão usando o perfil "Red", sshc Test abrirá uma nova janela de sessão usando o perfil "Verde" e outros hosts usarão o perfil "Padrão".

    
por 30.09.2013 / 15:47
2

Reunir todas as informações dos sites stack *** aqui é a solução mais simples que encontrei para o terminal mate + mate (o mesmo que para o gnome).

  1. No terminal de posicionamento, defina o segundo perfil, com plano de fundo diferente.
  2. Verifique se as teclas padrão funcionam Alt + PageDown / Alt + PageUp deve alterar o perfil e o plano de fundo também.
  3. sudo apt get install xdotool

Agora você pode modificar o / etc / ssh / ssh_config, para que ele possa mudar o perfil depois que cada sessão ssh for estabelecida:

Host *
  PermitLocalCommand yes
  LocalCommand xdotool key Alt+Page_Down

Agora, depois que cada conexão ssh é estabelecida no terminal, o perfil será alterado e você nunca mais colocará a atualização indesejada do SQL no banco de dados de produção :)

No entanto, não há solução fácil para voltar ao perfil padrão depois que a conexão ssh é fechada. Mas isso parece suficiente para mim, e eu não procurei mais informações.

    
por 31.03.2016 / 12:47