Preciso colocar o IP da minha máquina VPS em uma variável. Quero dizer para o endereço IP externo que aparece o valor da inet addr
seção, na ifconfig
saída.
Eu tentei:
ipa="$(hostname -i)"
Mas echo ${ipa}
trouxe o token localhost: 127.0.1.1
, então procurei outras soluções e tudo que encontrei inclui muitos pipes e awk
operações das quais não sei nada (nunca usei awk
e não estou muito familiarizado com regex).
Eu tentei isso:
ipa=$(ifconfig | grep "inet addr:[0-999]\.[0-999]\.[0-999]\.[0-999]")
Mas falhou, pois echo ${ipa}
possui uma linha de saída vazia.
Por que o que eu tentei falhou ou pelo menos como você resolveria isso?
Veja também aqui uma infinidade de alternativas. Ex.: usando
grep
:Explicação:
ipa=$( )
atribua a saída do comando entre parênteses à variávelipa
ifconfig
show interfaces e seus endereços. Você pode preferirip address
| grep -Po 'inet addr:\K[^\s]+'
filtrar a saída usando umperl
regex compatível, imprima o filtro de texto correspondente| grep -v '^127'
novamente, desta vez excluindo (-v
) valores que começam (^
) com127
Para pegar meu ip externo, eu costumo fazer:
Isso corresponderia à string
inet addr:
seguida por um único caractere que é um dígito de0
para9
, ou a9
, ou a9
, seguido por um ponto e outro caractere que é0
para9
ou9
ou9
... por exemploinet addr:1.2.3.4
, mas nãoinet addr:11.22.33.44
.Grupos de colchetes não correspondem a strings que formam números, apenas caracteres únicos.