У меня есть компьютер, на котором пользователь может установить статический IP-адрес. Проблема в том, что каким-то образом другой компьютер имеет такой же IP-адрес, который установлен как статический, но в данный момент не подключен к сети.
После того, как оба компьютера будут подключены, возникнет проблема, и попробуйте, чтобы оба компьютера имели одинаковый IP-адрес в одной сети.
У меня вопрос: можно ли получить все IP-адреса, которые используются от маршрутизатора, или их можно использовать в качестве статических IP-адресов в будущем?
Извините за мой нехороший язык.
Я использовал эту команду, но она возвращает только подключенные IP-адреса. Мне нужны все IP-адреса, которые уже установлены на маршрутизаторе:
sudo arp-scan --interface=wlan0 --localnet| awk "{print $1}"|tail -n +3|head -n -2
Хотя @Melebius уже упомянул, что это не характерно для Ubuntu, и необходимо задать вопрос на подходящем форуме. Однако я все еще попробую, помогают Вам здесь (пишущий сценарий, который должен быть приемлемым на этом форуме).
Большинство маршрутизаторов также поддерживает DHCP. Так сначала можно установить компьютер для получения IP-адреса с помощью DHCP. Затем запустите следующий скрипт. Это даст Вам все IP-адреса, которые используются в настоящее время. Однако нет никакого способа знать все IP-адреса, выделенные маршрутизатором, если Вы не системный администратор / доступ к конфигурации маршрутизатора (в таком случае, ответ тривиален).
Для сценария сначала создайте conf файл, перечисляющий всего возможного дюйм/с, которого Вы подозреваете (один на строку), говорите pinglan.conf
и вставленный в него $HOME/bin
.
Затем запустите следующий скрипт:
#!/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
Этот код не является моим оригиналом, но был со мной в течение многих лет, и я изменил к своим потребностям! Не имейте первоисточника. Благодаря o
Надеюсь, это поможет!
- Mike