Eu nunca tentei, mas posso pensar em algo que possa funcionar: você não permite que o SSH inicie seu shell de login, mas resolva o problema com suas próprias mãos. Você pode dizer ao SSH para executar comandos arbitrários. Em vez de
ssh remote_host
você executaria algo nos moldes de
ssh remote_host -t "
. /etc/profile;
. /etc/bash.bashrc;
DAT_ORIGIN_HOST=$(ifconfig eth0|grep -Po 't addr:\K[\d.]+') /bin/bash -l -i"
O que isso significa é que ele oferece ao SSH outra coisa a fazer, em vez de iniciar um shell de login. Esse algo é uma string, que será executada como comando, remotamente. Usamos isso para lançar um shell de uma maneira muito especial: damos a ele uma variável de ambiente DAT_ORIGIN_HOST
, que contém nosso ip na eth0 (talvez seja necessário mudar isso).
O truque que fazemos é colocar o comando para executar remotamente em qoutes "
. As aspas duplas (pelo menos no Bash) significam que, ANTES DA CADEIA PASSAR PARA O SSH, o nosso shell faz a varredura e executa expansões / substituições, quando apropriado. Isso significa que nosso shell irá avaliar a parte '$ (ifconfig ...), para o nosso atual endereço ip e passar uma string ssh que contém a definição para uma variável ambiental com o nosso endereço IP local.
Uma vez logado na máquina remota, echo $DAT_ORIGIN_HOST
deve imprimir seu endereço IP.
Para desenvolver essa chamada para o SSH, tomei descaradamente de aqui para extrair o endereço IP e aqui para o -t e como iniciar algo interativo
Isenção de responsabilidade: não tenho certeza sobre a opção -l
e -i
para /bin/bash
. Talvez você precise omiti-los.