![笔记:](https://linux22.com/image/1148197/%E7%AC%94%E8%AE%B0%EF%BC%9A.png)
我有一台计算机,用户可以设置静态 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
希望这可以帮助!
-- 迈克