Sempre que vou fazer um ssh ou qualquer outra atividade que necessite saber qual o meu endereço IP, tinha que fazer o velho ipconfig e ver qual o IP da interface.
Há algum tempo que venho futucando nesse script. Mexe aqui, adiciona um negoço ali... mas nunca fui com as reais intenções de terminar. Hoje (31 Jan 09) em meio a uma maresia típica de um sábado pela manhã, resolvi tomar vergonha na cara e acabar com esse sofrimento. Então, não mais, vos apresento o IR - Interface de Rede (gostei do nome porque é pequeno =D )
Este script pode ser encontrado no PasteBin
http://rauhmaru.pastebin.com/d662829e0
UPDATE: Divulguei este script na lista de discussão de ShellScript ( shell-script * yahoogrupos,com,br ) e pedi pra galera revisar e se possível otmizar o código. O Grande Júlio Neves (https://wiki.softwarelivre.org/TWikiBar/) viu e disse que estava legal ( uia!! ), mas que o script não aceitava mais de um argumento ( ir -oeeth0, por exemplo - exibir IP externo e o da interface eth0 ). Ele recomendou o uso do 'Getopts'. Quebrei um pouco a cabeça pra implementar, porque agora eu teria de usar um 'while'. O problema não foi o 'while', mas o que tinha dentro dos cases: exit 0 ao final de cada linha.
Com os exit's no final de cada linha, o while não funciona, já que ele sairia ao final da execução da primeira rodada. Com isso ajustado, o script ficou lindo, rodando que é uma beleuza =D
Opções:
Por default, ele exibirá o endereço da inteface eth0.
-h: Exibe o help (ajuda);
-o: Exibe o IP externo;
-a: Todos os endereços IP's (interfaces, loopback e externo);
-e INTERFACE: Endereço de uma interface específica;
-v: Versão e último complemento
Não é lá um graaande script, mas pra mim vai ser muito útil. Já tá no meu /bin ;)
Há algum tempo que venho futucando nesse script. Mexe aqui, adiciona um negoço ali... mas nunca fui com as reais intenções de terminar. Hoje (31 Jan 09) em meio a uma maresia típica de um sábado pela manhã, resolvi tomar vergonha na cara e acabar com esse sofrimento. Então, não mais, vos apresento o IR - Interface de Rede (gostei do nome porque é pequeno =D )
Este script pode ser encontrado no PasteBin
http://rauhmaru.pastebin.com/d662829e0
UPDATE: Divulguei este script na lista de discussão de ShellScript ( shell-script * yahoogrupos,com,br ) e pedi pra galera revisar e se possível otmizar o código. O Grande Júlio Neves (https://wiki.softwarelivre.org/TWikiBar/) viu e disse que estava legal ( uia!! ), mas que o script não aceitava mais de um argumento ( ir -oeeth0, por exemplo - exibir IP externo e o da interface eth0 ). Ele recomendou o uso do 'Getopts'. Quebrei um pouco a cabeça pra implementar, porque agora eu teria de usar um 'while'. O problema não foi o 'while', mas o que tinha dentro dos cases: exit 0 ao final de cada linha.
Com os exit's no final de cada linha, o while não funciona, já que ele sairia ao final da execução da primeira rodada. Com isso ajustado, o script ficou lindo, rodando que é uma beleuza =D
#!/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
# PasteBin: http://rauhmaru.pastebin.com/d662829e0
# Download: http://rauhmaru.pastebin.com/pastebin.php?dl=d662829e0
# -- 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 -| 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
Opções:
Por default, ele exibirá o endereço da inteface eth0.
-h: Exibe o help (ajuda);
-o: Exibe o IP externo;
-a: Todos os endereços IP's (interfaces, loopback e externo);
-e INTERFACE: Endereço de uma interface específica;
-v: Versão e último complemento
Não é lá um graaande script, mas pra mim vai ser muito útil. Já tá no meu /bin ;)
0 comentários:
Postar um comentário
Só não vale xingar a mãe ou puxar cabelo nos comentários =)