Eu encontrei uma outra maneira de obter o ambiente vars em vez de passar o env inteiro: envie o PID do processo que iniciou a sessão SSH de local para remoto para a máquina remota, para que possamos obter todos os vars de ambiente desse PID posteriormente .
Quando executo o SSH da máquina remota para a local, executo um comando para obter o ambiente desse PID (usando /proc/<PID>/environ
) e, em seguida, executo o comando no mesmo ambiente. Observe que isso funciona apenas com o Linux (ou SOs que possuem /proc
).
É algo assim:
Envia o PID de execução do bash na máquina local para um arquivo no remoto:
user@local-machine:~$ ssh other-user@remote-machine "echo $$ > \$HOME/.local_bash_pid"
Crie a conexão:
user@local-machine:~$ ssh other-user@remote-machine
Execute o SSH no controle remoto para executar um comando no local:
other-user@remote-machine:~$ ssh user@local-machine "source <(cat /proc/$(cat $HOME/.local_bash_pid)/environ | tr 'user@local-machine:~$ ssh other-user@remote-machine "echo $$ > \$HOME/.local_bash_pid"
' ' ') && command-I-want-to-execute-on-that-environment"