:::: MENU ::::

sábado, 31 de janeiro de 2009

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

#!/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 ;)
Categories: , , ,

0 comentários:

Postar um comentário

Só não vale xingar a mãe ou puxar cabelo nos comentários =)

Posts populares