我想检测一下Wake On Lan是否可行。
在我的路由器(Tomato firmware)上有一个表,上面有信息--当显示设备"Active (In ARP)“时,可以通过WOL (脱机linux pc)打开这个设备。
我想知道这是通过路由器功能实现的,还是我可以用C#或C来实现?函数SendArp可以检测MAC地址并执行"arping“,但这不是我想要做的。
我在Linux服务器上运行arp -a,这是输出:
[root@trnsrv1 ~]# arp -a
? (10.223.8.82) at 00:50:56:B5:75:08 [ether] on bond0
? (10.223.11.254) at E0:5F:B9:66:A6:00 [ether] on bond0
10.223.11.254 -这是网关
10.223.8.82 -这是另一台服务器,它不是局域网上唯一的服务器。
为什么它出现了,而其他人却没有?
我有个奇怪的问题出现在我们的网络上。
每周有一两次用户(总是不同的用户)抱怨无法与处理Exchange、DNS和文件共享的Small Business Server 2003通信,这实际上切断了机器与任何类型的网络通信。
当我检查该特定服务器上的ARP表时,会有一个静态ARP条目映射到所讨论的工作站的IP地址,其中包含一个完全不同的MAC地址。如果我手动删除静态条目,机器将恢复联机。奇怪的是,有这个问题的总是另一台机器。
在我的生活中,我无法弄清楚是什么在服务器上设置这些静态ARP条目,并迫使我每次进入并手动删除它,以使工作站恢复联机。
我们的环境相当小(20个工作站和2个服务器)。
任何帮助
因此,如果我想通过SSH连接到网络上的所有设备,使用ARP表确切地知道在哪里连接,我能做什么?
代码应该是这样的:
#!/bin/bash
for a in $([ARP Table here?])
do
ssh user@$a true
echo "Connected to $a"
done
我不知道如何在变量中存储dinamic。另外,我也不确定我是否可以在之后使用这个变量通过ssh进行连接,因为IP不会是int,但更可能是字符串。
编辑:安德鲁让我注意到,我的网络上并不是每个设备都在我的ARP表中,我想知道:
从0开始到当前网络掩码的最大值还是在ARP表
做了一些谷歌搜索,查看了手册页,但没有找到这个数字的具体答案。
例如,
# ip -d -stat ne show dev eth1 | column -t | sort -V
192.168.200.41 used 1034/4635/1032 probes 6 FAILED
192.168.200.44 lladdr 00:c0:b7:xx:xx:xx used 1037/1032/266 probes 1 STALE
192.168.20.5 lladdr 00:40:9d:xx