Obtenha todos os endereços IP reservados para o roteador [closed]

0

Eu tenho um computador onde o usuário pode definir o endereço IP estático. O problema é se, de alguma forma, outro computador tiver o mesmo endereço IP que está configurado como estático, mas que agora não está conectado à rede.

Depois que os dois computadores estiverem conectados, haverá problemas e os dois computadores terão o mesmo endereço IP em uma rede.

A minha pergunta é: é possível obter todos os endereços IP que são usados no roteador ou que podem ser usados como endereços IP estáticos no futuro?

Desculpe pela minha linguagem ruim.

Eu usei esse comando, mas retornei apenas os endereços IP que agora estão conectados. Preciso de todos os endereços IP que já estão definidos no roteador:

sudo arp-scan --interface=wlan0 --localnet| awk "{print $1}"|tail -n +3|head -n -2
    
por evelikov92 13.06.2017 / 10:22

1 resposta

2

Embora @Melebius já tenha mencionado que isso não é específico para o Ubuntu e você deve fazer a pergunta no fórum apropriado. No entanto, ainda tentarei ajudá-lo aqui (escrevendo um script, que deve ser aceitável neste fórum).

A maioria dos roteadores também suporta DHCP. Então, primeiro você pode configurar seu computador para adquirir um endereço IP usando DHCP. Em seguida, execute o seguinte script. Isso fornecerá a você todos os endereços IP que estão atualmente em uso. No entanto, não há como saber todos os endereços IP alocados pelo roteador, a menos que você seja o administrador do sistema / acesso à configuração do roteador (nesse caso, a resposta é trivial).

Para o script, primeiro crie um arquivo conf listando todos os IPs possíveis que você suspeita (um por linha), digamos pinglan.conf e coloque-o em $HOME/bin .

Em seguida, execute o seguinte script:

#!/bin/bash

#< Configurable script to ping my LAN

if [ "$#" -ne 0 ]; then
   echo "Usage: 'basename $0'" && exit 1
fi


_TEMP_FILE=$HOME/tmp/pinglan.$$

trap 'rm -f $_TEMP_FILE; tput reset;  exit 1' 1 2 3 15

clear

_GREEN='tput setf 2'
_RED='tput setf 4'
_BLUE='tput setf 1'

while read line
do
  _IP_ADDR='echo $line | awk -F : '{ print $1 }''
  _HOST_NAME='echo $line | awk -F : '{ print $2 }''
  ping -w 1 $_IP_ADDR > $_TEMP_FILE 2>&1
  grep "bytes from" $_TEMP_FILE > /dev/null 2>&1
  if [ "$?" -eq 0 ]; then # host is up
    echo "${_GREEN}$_HOST_NAME ($_IP_ADDR) is UP"
  else
    echo "${_RED}$_HOST_NAME ($_IP_ADDR) is DOWN"
  fi
    done < $HOME/bin/pinglan.conf

echo -e "\n\n${_BLUE}Press enter to continue..."
read dummy
# tput reset

rm -f $_TEMP_FILE
exit 0

Nota:

Este código não é meu original, mas está comigo há anos e eu modifiquei para as minhas necessidades! Não tem a fonte original. Graças ao o

Espero que isso ajude!

- Mike

    
por Mike V.D.C. 13.06.2017 / 11:41