[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] mostra IP de interfaces
From: |
Raul Libório |
Subject: |
Re: [shell-script] mostra IP de interfaces |
Date: |
Sun, 1 Feb 2009 03:45:21 -0300 |
Grande Júlio,
Haha, A vossa otoridade é quem manda! Valeu grande mestre!
Cara, espie na aventura que você me meteu... Comecei a fazer o add-on
assim que li seu email (31 Jan, 23:10+ -).
Como nunca tinha utilizado o getopts, li o Papo de Butiquim como você
recomendou. Ai, ainda meio enduvidado, li o trecho do livro do Aurélio
(este está disponível para download).
Leio, altero, executo e nada! O laço não queria funcionar de jeito
nenhum! Já havia desistido do 'desafio'. Eu já estava escrevendo para
a lista pra dizer que 'bufei na farofa' e não consegui terminar. Ai
foi quando milagrosamente o cérebro voltou a funcionar e viu onde
estava a merda: exit 0;; no final de cada opção do case! Ai num tem
looping que rode!
Ajustei o script, melhorei um pouco o código (beeem suavemente) e
adicionei o 'getopts'. Ficou assim:
# -- inicio
#!/bin/bash
# 2.2 - Aceita varios parametros (a pedido do Julio Neves)
# 2.1 - Exibe o endereco de todas as interfaces
# 2.0 - Mostra o endereco IP de saida
# 1.0 - Mostra o ip das interfaces
# -- VARIAVEIS
IFCONFIG="/sbin/ifconfig"
MODO_DE_USO="USO: $( basename $0) [ OPCAO ]|-e[ INTERFACE ]
OPCOES:
-a: Exibe o endereco IP de todas as interfaces,
inclusive o endereco externo
-e INTERFACE: Exibe o endereco IP da interface INTERFACE
-o: Exibe o endereco IP de saida
-h: Exibe esta ajuda
-v: Versao e ultima alteracao
STATUS:
0 Saida ok
1 Argumento invalido
2 Falta de argumento
IR - Interface de Rede
Visualizador simples de endereco de rede
Raul Liborio - <address@hidden> | http://rauhmaru.blogspot.com/
http://www.redesfja.com/
"
# -- EXECUCAO
if [ -z $1 ]; then
ip a | awk "/eth0/"'{print $2}' | tail -1 | cut -d/ -f1
exit 0
else
IP_EXTERNO(){
w3m -dump http://ipid.shat.net/iponly/ | sed 's/ //;' | head -1
}
while getopts ":ahove:" ARGUMENTOS
do
case "${ARGUMENTOS}" in
h) echo "${MODO_DE_USO}"
exit 0 ;;
v) cat $( which $( basename $0 ) ) \
| awk -F# "/[0-9]/"'{ print $2 }' | head -1
exit 0;;
a) LANG=POSIX ${IFCONFIG} | awk "/inet addr:/"'{ print $2 }'\
| cut -d: -f2; IP_EXTERNO
exit 0;;
e) ip a show "$OPTARG" | awk /inet/'{ print $2 }'| \
head -1 | cut -d/ -f1;;
o) IP_EXTERNO;;
\?) echo "${MODO_DE_USO}"
exit 1;;
:) echo sim... e a INTERFACE? Esqueceu foi? cabeca... :P
exit 2;;
esac
done
fi
# -- fim
Então é isso. Acho que tá pronto =D Muito obrigado Júlio pela dica, me
rendeu uma ótima experiência =D
e agora eu posso dormir ( 01 Fev, 03:44)
Ah.. quando é que vai ter curso de Shell em Salvador?
|
|
+ \
\\.G_.*=.
`( '/.\|
.>' (_--.
_=/d ,^\
~~ \)-' '
/ |
' '
Raul Libório
UniJorge Redes - www.redesfja.com
rauhmarutsªhotmailºcom
Linux user#4444581
"The bug is on the table."
" Se você tem uma maçã e eu tenho uma maçã e, em seguida, trocarmos as
maçãs, eu e você ainda teremos uma maçã cada um. Mas se você tem uma
idéia e eu tenho uma idéia e trocarmos essas idéias, então cada um de
nós terá duas idéias. "
George Bernard Shaw
Dúvidas: enviar para /dev/null
2009/1/31 Julio C. Neves <address@hidden>:
> Fala Raul,
> script blz e bastante útil. Valeu pela colaboração, e é por isso que o Sw
> Livre é imbatível, pois todos ajudam todos. Somos "todos por um e todos por
> outros". ;)
>
> Só um conselho: o case que vc fez não permite que o usuário escolha mais de
> uma opção, tipo: ./prg -oe INTERFACE, ou ./prg -oeINTERFACE, e isso é
> facilmente corrigível com o uso de getopts que vc pode entender facilmente
> lendo o Papo de Botequim
> 010<https://wiki.softwarelivre.org/TWikiBar/TWikiBarPapo010#Comando_getopts>
> .
>
> Caso esta solução te agrade, favor republicar o script na lista.
> --
> Abração,
> Julio
> *Cursos de Shell e Zenity nos finais de semana:
> - Breve no RJ;
> - Em SP ligue (11) 2125-4747;
> - Em DF ligue (61) 3223-3000;
> - Turmas fechadas em outras cidades ligue (21) 8112-9988*
>
> 2009/1/31 Raul Libório <address@hidden>
>
>> Olá amigos,
>>
>> Fiz um script simples, mas de grande utilidade (ao menos pra mim :D).
>> Ele mostra o endereço IP das interfaces conectadas (eth0 por default e
>> outras com -e INTERFACE) e também o IP externo ( opção -o ).
>> Como disse, é simples, mas útil, já que a saída é apenas o endereço,
>> sem todas aquelas informações de máscara, broadcast, MTU, MAC...
>> Gostaria da ajuda de vocês para melhorar o código. O script (ao menos
>> aqui no openSUSE 11.1) está funcional.
>>
>> http://pastebin.com/m6b0d8ca0
>>
>> # -- Inicio
>>
>> #!/bin/bash
>> # 2.1 - Exibe o endereco de todas as interfaces
>> # 2.0 - Mostra o endereco IP de saida
>> # 1.0 - Mostra o endereço de eth0
>> # GPL
>> # Pastebin: http://pastebin.com/m6b0d8ca0
>>
>> # -- VARIAVEIS
>>
>> INT="$1"
>>
>> MODO_DE_USO="USO: $( basename $0) [ INTERFACE ]|[ OPCAO ]
>>
>> OPCOES:
>> -a: Exibe o endereco IP de todas as interfaces,
>> inclusive o endereco externo
>> -e INTERFACE: Exibe o endereco IP da interface INTERFACE
>> -o: Exibe o endereco IP de saida
>> -h|--help Exibe esta ajuda
>>
>> IR - Interface de Rede
>> Visualizador simples de endereco de rede - GPL3
>>
>> Raul Liborio - <address@hidden <rauhmaru%40gmail.com>> |
>> raumaru.blogspot.com/
>> www.redesfja.com
>> "
>> # -- EXECUCAO
>>
>> if [ -z $INT ]; then
>>
>> ip a | awk "/eth0/"'{print $2}' | tail -1 | cut -d/ -f1
>> exit 0
>>
>> else
>>
>> IP_EXTERNO(){
>> w3m -dump http://ipid.shat.net/iponly/ | sed 's/ //;' | head -1
>> }
>>
>> case $INT in
>>
>> "--help"|"-h") echo "$MODO_DE_USO"
>> exit 0 ;;
>>
>> "-v"|"--version") cat $( which $( basename $0 ) ) \
>> | awk -F# "/[0-9]/"'{print $2}' | head -1
>> exit 0;;
>>
>> "-a"|"--all") LANG=POSIX ifconfig | awk "/inet addr:/"'{ print $2 }'\
>> | cut -d: -f2; IP_EXTERNO
>> exit 0;;
>>
>> "-e") ip a show "$2" | awk /inet/'{print $2 }'| \
>> head -1 | cut -d/ -f1
>> exit 0;;
>>
>> "-o") IP_EXTERNO
>> exit 0;;
>>
>> *) echo "$MODO_DE_USO"
>> exit 1;;
>>
>> esac
>> fi
>>
>> # -- Fim
>>
>> Desde já, valeu galera =D
>>
>> --
>>
>> |
>> |
>> + \
>> \\.G_.*=.
>> `( '/.\|
>> .>' (_--.
>> _=/d ,^\
>> ~~ \)-' '
>> / |
>> ' '
>> Raul Libório
>> UniJorge Redes - www.redesfja.com
>> rauhmarutsªhotmailºcom
>> Linux user#4444581
>>
>> "The bug is on the table."
>>
>> " Se você tem uma maçã e eu tenho uma maçã e, em seguida, trocarmos as
>> maçãs, eu e você ainda teremos uma maçã cada um. Mas se você tem uma
>> idéia e eu tenho uma idéia e trocarmos essas idéias, então cada um de
>> nós terá duas idéias. "
>>
>> George Bernard Shaw
>>
>> Dúvidas: enviar para /dev/null
>>
>>
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
> ------------------------------------
>
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação, como
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio
> aviso.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em
> http://www.listas-discussao.cjb.net
> ---------------------------------------------------------------------
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
>
> Links do Yahoo! Grupos
>
>
>
- Re: [shell-script] mostra IP de interfaces,
Raul Libório <=