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?
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?
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):
iproute2Có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).