Dispara um comando echo após ssh em iterm2

1

Estou tentando acionar o seguinte comando depois de "ssh somehost": export PROMPT_COMMAND='echo -ne "3]0;$HOSTNAME%code%7"'

nada parece funcionar, alguma sugestão?

    
por Elad Kuzy 30.11.2015 / 09:42

1 resposta

0

Eu não acho que isso possa ser feito.

Primeiro de tudo eu tive que reescrever seu comando; embora isso seja anulado pelo fato (veja adiante) de que o que você deseja obter não pode ser alcançado, ainda que o método para isso seja de algum interesse e generalidade, então eu irei discuti-lo. Eu tive que mudar o seu comando para

  ssh me@remote 'COLOR=("echo" "-ne" "\"\033[48;5;95;38;5;214m\$HOSTNAME3[0m\""); export PROMPT_COMMAND=${COLOR[@]}'

O motivo é que é necessário evitar que o shell local substitua o valor $HOSTANME its local , portanto, o que passamos para o servidor remoto deve ser colocado entre aspas simples, ' . Para que isso funcione, deve haver no aspas simples dentro do comando para passar, então eu tive que reescrevê-lo de tal forma que nenhuma aspas simples aparecem no comando para serem executadas remotamente. Eu consegui fazer isso com uma matriz, COLOR . O comando

COLOR=("echo" "-ne" "\"\033[48;5;95;38;5;214m\$HOSTNAME3[0m\"") export PROMPT_COMMAND=${COLOR[@]}  

funciona bem localmente (a escolha das cores é minha).

Existem duas maneiras de exportar variáveis de ambiente via ssh. Primeiro, pode-se alterar a variável AcceptEnv no arquivo /etc/ssh/sshd_config do servidor: mas o manual indica p>

AcceptEnv

Specifies what environment variables sent by the client will be copied into the session's environ.

A ênfase aqui está na sessão : nenhuma mudança global.

A segunda maneira é através da variável PermitUserEnvironment :

PermitUserEnvironment

Specifies whether ~/.ssh/environment and environment= options in
 ~/.ssh/authorized_keys are processed by sshd.  The default is
 "no".  Enabling environment processing may enable users to bypass
 access restrictions in some configurations using mechanisms such
 as LD_PRELOAD.

Como você pode ver, ssh é bastante cuidadoso em não , permitindo que um usuário remoto altere variáveis de ambiente global.

    
por 30.11.2015 / 13:33