Transferindo temporariamente as configurações do shell para a sessão ssh remota?

0

Eu estou curioso, freqüentemente eu gostaria de transferir todas as minhas configurações de shell (dotfiles) para uma sessão remota apenas durante a minha sessão e depois tê-las invertidas quando eu sair. Melhor ainda seria ativá-los apenas nessa sessão, para que qualquer pessoa que se conectasse também pudesse ter o padrão ou suas próprias configurações personalizadas para o shell.

Existe uma maneira de fazer isso agora ou exigiria uma solução personalizada de mim mesmo escrevendo essa funcionalidade? Eu não estou vendo atualmente quaisquer opções reais para conseguir isso.

    
por ylluminate 23.07.2013 / 19:35

3 respostas

2

Você não precisa escrever muito (apenas um script de shell). As ferramentas já estão lá. Use-os para exportar apenas o que você precisa para evitar o ônus de consertar as funções do shell de outras pessoas.

(set; alias) |
ssh -l root 10.3.0.8 'mkdir ~/tmp 2>/dev/null; cat > ~/tmp/.import'

Isso não é à prova de falhas, então você deve tentar a saída até achar que ela funciona corretamente.

(set; alias) > ~/tmp/import
bash -n tmp/import

tmp/import: line 6085: syntax error near unexpected token '('
tmp/import: line 6085: '        !(?(*/)python*([0-9.])|-?))'

Isso é menos problemático com apenas variáveis de ambiente, porque é fácil impor um formato analisável:

env | sed -Ee "
      s/'/\\'/g;
      s/=(.*)/=''/
      " > tmp/export.vars-only

E exportar apenas suas funções pode ser feito assim.

declare -f 'grep  ^function ~/.functions | awk '{print $2}''

Se você usar a sintaxe moo() { true;} para declará-las ou alguma variação delas, tente grep -Eoe '^\w+' ~/.functions

    
por 23.07.2013 / 22:11
1

Dependendo do que você precisa, existem várias soluções.

  1. Se você tiver o controle da configuração do servidor openssh, poderá configurar o AcceptENV no servidor e, em seguida, o SendENV no cliente enviará variáveis ambientais específicas.

  2. Se isso não for suficiente e você usar a chave auth, poderá usar as entradas authorized_keys para executar comandos específicos, como o carregamento de arquivos de configurações já transferidos.

  3. Se nenhum desses trabalhos funcionar para você, você terá que envolver seu script / comando com um wrapper que configure seu ambiente.

por 23.07.2013 / 19:58
0

Eu tenho medo que você tenha que escrever algo customizado .... algo como um simples comando cp para os diretórios e arquivos envolvidos.

    
por 23.07.2013 / 19:51