Use o SSH para executar o comando de exportação remota e permaneça logado

2

Eu tenho um problema simples de precisar executar um comando de exportação sobre o ssh, e depois fico logado, mas estou tendo alguns problemas. Embora eu esteja interessado em uma solução para esse problema por vários motivos, o principal deles é que eu possa personalizar minhas guias de terminal para um nome de minha escolha.

Aqui está o comando que tenho até agora:

ssh -t root@somehost "export PROMPT_COMMAND=''; echo -ne '3]0;MY_TAB_NAME'; echo -ne '
ssh -t root@somehost "export PROMPT_COMMAND=''; echo -ne '3]0;MY_TAB_NAME'; echo -ne '%pre%7'; /bin/bash -i"
7'; /bin/bash -i"

Isso é muito doozy, e acho que estou quase lá. A opção -t abre um pty (pseudo terminal), enquanto o / bin / bash -i abre uma sessão bash interativa (permanecendo logado após a execução do comando ssh. O comando de exportação simplesmente limpa o prompt para que o seguinte eco renomeie.

O problema que estou tendo é que a exportação não parece estar sendo executada no shell correto. Acho que estou sentindo falta de algo bem simples.

Além disso, estou tentando fazer isso com base em linha de comando sem ter que usar os vários arquivos .bash. Tenho centenas de servidores aos quais me conecto e tenho uma maneira fácil de marcar todas as conexões, mas preciso apenas de uma forma para nomear cada guia no meu terminal (Mac OS X, disposto a usar o iTerm se houver uma solução mais fácil).

Obrigado!

    
por wrangler 25.04.2011 / 08:10

3 respostas

4

Talvez você deva analisar a opção ~/.ssh/environment ou environment em ~/.ssh/authorized_keys . Veja a página sshd(8) man para detalhes.

    
por 25.04.2011 / 08:17
1
ssh host -t VAR=VALUE bash --login
    
por 08.05.2011 / 17:22
0

I have a simple problem of needing to execute an export command over ssh, and then stay logged in [...]

Só para resolver a sua questão principal, sem procurar muito no resto do seu problema. Se você quiser exportar algumas variáveis (ou outras coisas do ambiente), você pode usar env .

O comando env permite executar um programa em um ambiente modificado. Portanto, você pode usá-lo para executar bash -i no servidor remoto, modificando o ambiente com prazer.

Deixo apenas um exemplo:

hmontoliu@laptop:~$ ssh -t remoteuser@remoteserver env EXPORTEDSTUFF='foo' MOREXPORTEDSTUFF='bar' bash -i
remoteuser@remoteserver's password: 
remoteuser@remoteserver:~$ echo $EXPORTEDSTUFF 
foo
remoteuser@remoteserver:~$ echo $MOREXPORTEDSTUFF 
bar

Verifique a página de manual do env

HTH

    
por 08.05.2011 / 17:10