我遇到了一个奇怪的问题,我试图确定某个 MAC 地址(我的 xbox 360)是否在网络上(即
问题是我通过 Synology Cubestation 执行此操作,它是基于 powerpc 的 NAS,带有嵌入式 Linux。
我可以使用各种命令,包括 ping 和 nslookup,但没有最有用的 arp 命令。
我不介意执行诸如从 192.168.1.1 到 192.168.1.255 的所有内容之类的操作,但这不会返回 mac 地址。不幸的是,我对 Linuxy 网络命令的了解有限,因此欢迎提出任何建议。
PS 如果有其他方法可以确定我的 xbox 是否在网络上,也欢迎提出这些建议。
答案1
首先,几个假设:
- 你想通过编程来实现,而不是看 LED
- 你不知道 xbox 的当前 IP
- 您知道 dhcp 提供 IP 的子网
列出系统当前已知的 IP/MAC:
cat /proc/net/arp
因此,您必须 ping 子网中的每个 IP,然后检查 arp 表,并确保 ping 通该 IP。
就像是:
ping -c 1 `cat arp | grep "00:12:34:45:78:AB" | cut -d" " -f 1` >/dev/null; echo $?
如果 Xbox 正在响应 ping,则输出 0,否则输出 1。根据您要执行的操作,您可以对 $? 或其他内容执行一些 if 操作。
答案2
如果 /proc/net/arp 存在并且您有 grep/awk 可用:
mac="00:0e:a6:b6:cd:5b"
ip=$(cat /proc/net/arp | grep $mac | awk '{print$1}')
if [ "$ip" != "" ]; then
echo "It's On"
fi
答案3
你不能只检查 xBox 360 内部的网络设置吗?
在 Xbox 360 控制台上,按照以下步骤操作:
- 选择系统设置。
- 选择网络设置。
- 选择配置网络。
这可能会告诉您 xBox 360 机器的 IP 地址和 MAC 地址。
答案4
您确定您的 CubeStation 上没有安装“arp”吗?这可能是路径问题吗?
假设您正在登录到 CubeStation 上的 shell,请尝试:
/sbin/arp
或者
/usr/sbin/arp