Por que não usar ip
ao invés do ifconfig
, e pular todos os greps e cortes extras, já que o awk pode fazer isso.
Então, um comando como ip addr show dev eth0 | awk '/^ +inet / {split($2,a,"/"); print a[1]}'
Em qualquer caso, a maior parte do seu problema em seus comandos de exemplo tem a ver com o tipo de aspas que você escolhe e como o bash as avalia.
Se você fizer algo como cfrancy@ws:~$ ssh root@srv01 echo "Hello $USER"
, a saída que verá será Hello cfrancy
e não Hello root
, como esperado. Como você usou aspas duplas "
em torno do seu comando para o sistema remoto, todas as variáveis são avaliadas antes de o comando ser enviado. O comando cfrancy@ws:~$ ssh root@srv01 echo 'Hello $USER'
retornará Hello root
, pois o $USER
é avaliado no site remoto. É claro que você também precisa mudar ou escapar de suas outras citações dentro de seu comando composto para que as coisas funcionem corretamente.
De qualquer forma, mantendo o comportamento de cotação em mente, o comando provavelmente faria o que você quer. embora eu ache que minha solução que usa apenas ip
e awk
seja a melhor escolha, já que estou usando apenas 2 programas em vez de 4.
ssh -t $user@$remote_host '/sbin/ifconfig eth0 | grep "inet addr:"| grep -v "127.0.0.1" | cut -d: -f2 | awk "{ print $1}"'