(LANG=C; ifconfig eth0|grep "inet addr"|cut -f2 -d:|cut -f1 -d" ")
Para pegar o endereço de uma interface diferente basta colocar o nome dessa interface no lugar de eth0.
É interessante que o comando seja colocado entre parênteses, para não modificar o valor da variável de ambiente LANG da sua sessão de shell atual (que controla o idioma em que os aplicativos são exibidos).
…ou usando awk:
LANG=C ifconfig eth0 | awk ‘/inet addr/ {sub(/:/,” “); print $3}’
A diferença é que neste caso somente 1 processo será executado depois do ifconfig (awk), e não 3 (grep, cut, cut) :)
“print” seria mais um processo.
Nop, viagem minha, vi o “;” e confundi.
Caso prefira fazer com sed, seria algo como!
[leapstone@node0 ~]$ LANG=C;/sbin/ifconfig eth0 | sed ‘/inet addr/!d; s/.*addr://; s/ .*//g’
172.27.3.9
[leapstone@node0 ~]$
[]s
Ual, precisei disso no mesmo dia, acabei fazendo assim:
#!/bin/bash
#
# Tiago Oliveira de Jesus – tiago@vgt.com.br
# /usr/local/bin/ip_gw.sh – 2009-04-29
#
# Script para pegar ip e gw da placa de rede dinamicamente.
#
# O script recebe como parametros a placa (ethX) + IP ou GW ou NET
# para retornar IP ou GW ou NETWORK:-)
#
# Exemplos:
# /usr/local/bin/ip_gw.sh eth1 IP
# 123.456.789.12
#
# /usr/local/bin/ip_gw.sh eth1 GW
# 123.456.789.1
#
# /usr/local/bin/ip_gw.sh eth1 NET
# 123.456.789.0/24
#
## CHANGELOG ##
# 2009-05-01 – Adicionada a variável de ambiente LANG para padronização das respostas
# Retirado do post https://codare.aurelio.net/2009/04/29/shell-obter-o-ip-da-interface-de-rede/
# by Fabiano Pires
# 2009-05-01 – Adicionada if para verificar se a placa existe
#
##############
LANG=C
PLACA=${1}
TIPO=${2}
PegaIP(){
IP=$(ifconfig $PLACA | grep ‘inet addr:’|sed ‘s/.*inet addr://g ; s|\([0-9]\{,3\}\.[0-9]\{,3\}\.[0-9]\{,3\}\.[0-9]\{,3\}\)\(.*\)|\1|g’)
echo $IP
}
PegaGW(){
GW=$(ip route |grep $PLACA|grep default|cut -d” ” -f3)
echo $GW
}
PegaNET(){
NET=$(ip ro|grep “^\([0-9]\)”|grep “/”|grep $PLACA|cut -d” ” -f1)
echo $NET
}
if grep -qws $PLACA <(ifconfig |grep ‘^eth’|cut -f1 -d” “)
then
case $TIPO in
IP)
PegaIP
;;
GW)
PegaGW
;;
NET)
PegaNET
;;
*)
echo “Use $0 ethX {IP|GW|NET}”
exit
;;
esac
else
echo “$PLACA não existe”
fi
Eca.. ficou feio aqui, acho que nem o lugar, sorry..
Da próxima posto noutro lugar.
Dá até para remover 1 grep se usar o -n do sed:
ifconfig eth0 | sed -n ‘s/.*inet addr://g ; s|\([0-9]\{,3\}\.[0-9]\{,3\}\.[0-9]\{,3\}\.[0-9]\{,3\}\)\(.*\)|\1|gp’