+ Responder ao Tópico



  1. #1
    Su6mund0
    Visitante

    Padrão Capturar o IP do usuário..

    Ola amigos, estou desenvolvendo uma ferramenta em java que tem como principal finalidade tornar o iptables bem amigável.
    Estou precisando capturar ip,gateway!

    Existe um comando que possa me retornar apenas o numero do ip e gateway?

  2. #2
    Avenger
    Visitante

    Padrão Capturar o IP do usuário..

    Você quer uma função java prá isso, ou quer um comando de shell script mesmo?..

    Bem, se for uma função java, você está um pouco off-topic, e eu não vou saber te responder, mas se for o comando, dá prá você fazer isso aqui ó:

    Capturar o IP configurado numa dada interface, usando iproute2:

    Código :
    #!/bin/bash
    interface=eth0
    iproute2=/sbin/ip
    ipaddr="$("${iproute2}" addr list dev "${interface}" | grep "inet " | head -n 1 | cut -b10- | cut -f1 -d/ 2>&1)"
    echo "${ipaddr}"

    Usando o ifconfig

    Código :
    #!/bin/bash
    interface=eth0
    ifconfig=/sbin/ifconfig
    ipaddr="$("${ifconfig}" "${interface}" | grep "inet addr" | head -n 1 | cut -f2 -d":" | cut -f1 -d" ")"
    echo "${ipaddr}"

    Hora do gateway (vai pegar a primeira rota padrão listada na tabela de roteamento principal):

    iproute2
    Código :
    #!/bin/bash
    iproute2=/sbin/ip
    gateway="$("${iproute2}" route list | grep default | head -n 1 | cut -f3 -d" ")"
    echo "${gateway}"

    route não sei porque, mas o route sempre coloca a(s) rota(s) default na ultima linha... então prá diminuir código, a gente pode pegar simplesmente a última rota listada com um tail -n 1; de qualquer forma, vou explicitar o caminho mais longo e mais seguro (além disso, se não tiver rota default ia aparecer um ip-lixo se usássemos só a ultima linha):
    Código :
    #!/bin/bash
    route=/sbin/route
    gateway="$("${route}" -n | grep " UG " | head -n 1 | cut -b17- | cut -f1 -d" ")"
    echo "${gateway}"

    Espero que seja mais ou menos isso que precisa!..

    Ah! Aviso aos navegantes: shell script é lento prá cacete! Se precisar fazer algo assim, prá larga escala de uso, tente ou fazer um script prá gerar isso uma vez só durante o boot da máquina, ou então um script em perl ou mesmo php (é, php não é útil só prá gerar páginas não, as funções deles são ótimas prá fazer um outputzinho prá outros programas).