笔记:

笔记:

我有一台计算机,用户可以设置静态 IP 地址。问题是,如果另一台计算机有相同的 IP 地址,该地址设置为静态,但目前未连接到网络。

两台计算机连接后就会出现问题,并尝试两台计算机在一个网络上具有相同的 IP 地址。

我的问题是:是否有可能获取路由器使用的所有 IP 地址,或者将来是否可以像静态 IP 地址一样使用?

抱歉我的言语不当。

我使用了该命令,但只返回现在已连接的 IP 地址。我需要已设置到路由器的所有 IP 地址:

sudo arp-scan --interface=wlan0 --localnet| awk "{print $1}"|tail -n +3|head -n -2

答案1

虽然@Melebius 已经提到这个问题并不局限于 Ubuntu,你应该在合适的论坛上提问。不过我还是会尽力帮助你(编写一个脚本,应该可接受在这个论坛上)。

大多数路由器也支持 DHCP。因此,首先您可以将计算机设置为使用 DHCP 获取 IP 地址。然后运行以下脚本。这将为您提供所有 IP 地址现在正在使用。但是,除非您是系统管理员/有权访问路由器配置(在这种情况下,答案很简单),否则无法知道路由器分配的所有 IP 地址。

对于脚本,首先创建一个 conf 文件,列出您怀疑的所有可能的 IP(每行一个),说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

希望这可以帮助!

-- 迈克

相关内容