Obter IP da máquina com Terminal Linux
Dica publicada em Linux / Introdução
Obter IP da máquina com Terminal Linux
A motivação para que esta dica fosse escrita, foi a falta de outras. Esta, talvez nem precisasse ser escrita, mostrará algumas maneiras de se obter o(s) IP('s) da(s) máquina(s) que possuem usando um Terminal do Linux.
Para quem já usa o GNU/Linux a bastante tempo, talvez o texto se torne entediante (ou não), mas para quem está começando, será nais um aprendizado na vida.
man ifconfig
Nome: ifconfig - configura uma interface de rede
Sinopse:
Descrição: ifconfig é usado para configurar (e posteriormente manter) as interfaces de rede. É usado durante o boot para configurar a maioria delas para um estado usável. Depois disto, é normalmente somente necessário durante depurações ou quando for necessária uma configuração fina do sistema.
Se nenhum argumento for informado, ifconfig somente mostra o estado das interfaces correntemente definidas. Se um argumento interface for informado, ele mostra somente o estado da interface informada. De outra forma ele assume que os parâmetros devem ser configurados.
ifconfig --help
ifconfig [-a] [-v] [-s] <interface> [[<AF>] <address>]
[add <endereço>[/<tam_prefixo>]]
[del <endereço>[/<tam_prefixo>]]
[[-]broadcast [<endereço>]] [[-]pointopoint [<endereço>]]
[netmask <endereço>] [dstaddr <endereço>] [tunnel <endereço>]
[outfill <NN>] [keepalive <NN>]
[hw <HW> <endereço>] [metric <NN>] [mtu <NN>]
[[-]trailers] [[-]arp] [[-]allmulti]
[multicast] [[-]promisc]
[mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <tipo>]
[txqueuelen <NN>]
[[-]dynamic]
[up|down]
...
Pode-se também usar o grep para buscar padrões. Então, abaixo estão algumas opções:
Uso: grep [OPÇÃO]... PADRÃO [ARQUIVO]...
Busca por PADRÃO em cada ARQUIVO ou entrada padrão.
PADRÃO, por padrão, uma expressão regular básica (BRE).
Exemplo: grep -i "olá, mundo" menu.h main.c
Seleção e interpretação de expressão regular:
ifconfig
Como saída, temos algo parecido com:
Pode-se obter o IP fazendo as seguintes combinações como usuário sem poderes de root e de forma geral:
/sbin/ifconfig -a | grep broadcast | sed 's/netmask.*//g; s/[^0-9.]//g'
/sbin/ifconfig -a | grep -oP '(?<=inet).*(?=netmask*.*broadcast)'
Ou, como root:
# ifconfig -a | grep broadcast | sed 's/netmask.*//g; s/[^0-9.]//g'
# ifconfig -a | grep -oP '(?<=inet).*(?=netmask*.*broadcast)'
Para saber mais sobre os outros comandos usados nesta seção, digite no terminal
man nome-do-comando
Espero que gostem do pequeno artigo, se tiver outros métodos, postem nos comentário.
Para quem já usa o GNU/Linux a bastante tempo, talvez o texto se torne entediante (ou não), mas para quem está começando, será nais um aprendizado na vida.
Análise dos comandos a serem usados
Pode-se começar conceituando e mostrando algumas opções do "ifconfig", segue abaixo:man ifconfig
Nome: ifconfig - configura uma interface de rede
Sinopse:
- ifconfig [interface]
- ifconfig interface [aftype] opções | endereços ...
Descrição: ifconfig é usado para configurar (e posteriormente manter) as interfaces de rede. É usado durante o boot para configurar a maioria delas para um estado usável. Depois disto, é normalmente somente necessário durante depurações ou quando for necessária uma configuração fina do sistema.
Se nenhum argumento for informado, ifconfig somente mostra o estado das interfaces correntemente definidas. Se um argumento interface for informado, ele mostra somente o estado da interface informada. De outra forma ele assume que os parâmetros devem ser configurados.
ifconfig --help
ifconfig [-a] [-v] [-s] <interface> [[<AF>] <address>]
[add <endereço>[/<tam_prefixo>]]
[del <endereço>[/<tam_prefixo>]]
[[-]broadcast [<endereço>]] [[-]pointopoint [<endereço>]]
[netmask <endereço>] [dstaddr <endereço>] [tunnel <endereço>]
[outfill <NN>] [keepalive <NN>]
[hw <HW> <endereço>] [metric <NN>] [mtu <NN>]
[[-]trailers] [[-]arp] [[-]allmulti]
[multicast] [[-]promisc]
[mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <tipo>]
[txqueuelen <NN>]
[[-]dynamic]
[up|down]
...
Pode-se também usar o grep para buscar padrões. Então, abaixo estão algumas opções:
Uso: grep [OPÇÃO]... PADRÃO [ARQUIVO]...
Busca por PADRÃO em cada ARQUIVO ou entrada padrão.
PADRÃO, por padrão, uma expressão regular básica (BRE).
Exemplo: grep -i "olá, mundo" menu.h main.c
Seleção e interpretação de expressão regular:
-E, --extended-regexp PADRÃO uma expressão regular estendida -F, --fixed-strings PADRÃO textos separados por nova linha -G, --basic-regexp PADRÃO de uma expressão regular básica -P, --perl-regexp PADRO de uma expressão regular de sintaxe Perl -e, --regexp=PADRÃO usa PADRÃO como uma expressão regular -f, --file=ARQUIVO obtém PADRÃO do ARQUIVOOs outros comandos serão abordados adiante.
Obtendo o IP da máquina
Pode-se obter o obter o IP diretamente digitando no terminal o comando:ifconfig
Como saída, temos algo parecido com:
eth0 Link encap:Ethernet Endereço de HW 00:1a:3f:79:fa:37
UP BROADCASTMULTICAST MTU:1500 Métrica:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
IRQ:20 Endereço de E/S:0xc000
eth1 Link encap:Ethernet Endereço de HW x:x:x:x:x:x
inet end.: 10.x.x.x Bcast:10.x.x.x Masc:255.255.0.0
endereço inet6: fe80::121f:74ff:fe40:edd8/64 Escopo:Link
UP BROADCASTRUNNING MULTICAST MTU:1500 Métrica:1
RX packets:108017725 errors:0 dropped:0 overruns:0 frame:0
TX packets:205904725 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:1000
RX bytes:8806568871 (8.2 GiB) TX bytes:302266295633 (281.5 GiB)
IRQ:18
lo Link encap:Loopback Local
inet end.: 127.0.0.1 Masc:255.0.0.0
endereço inet6: ::1/128 Escopo:Máquina
UP LOOPBACKRUNNING MTU:16436 Métrica:1
RX packets:265988 errors:0 dropped:0 overruns:0 frame:0
TX packets:265988 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:0
RX bytes:2317050218 (2.1 GiB) TX bytes:2317050218 (2.1 GiB)
Então é perceptível que o IP é "10.x.x.x". No entanto, para quem quer elaborar um script que faça uso do IP da máquina, o comando acima não é conveniente.
Pode-se obter o IP fazendo as seguintes combinações como usuário sem poderes de root e de forma geral:
/sbin/ifconfig -a | grep broadcast | sed 's/netmask.*//g; s/[^0-9.]//g'
/sbin/ifconfig -a | grep -oP '(?<=inet).*(?=netmask*.*broadcast)'
Ou, como root:
# ifconfig -a | grep broadcast | sed 's/netmask.*//g; s/[^0-9.]//g'
# ifconfig -a | grep -oP '(?<=inet).*(?=netmask*.*broadcast)'
Para saber mais sobre os outros comandos usados nesta seção, digite no terminal
man nome-do-comando
Espero que gostem do pequeno artigo, se tiver outros métodos, postem nos comentário.