分类: WINDOWS
2011-02-24 16:03:15
本文以一个具体实例,介绍了如何配置和使用网络唤醒 -Wake On LAN (WOL) 。
Wake-on-Lan,既网络唤醒或者远程唤醒,是一种综合了硬件和软件,通过发送特定的网络包(Magic
Packet)来远程启动电脑(待机,休眠或者软关机-在操作系统中关闭计算机,而不是通过按电源开关)的技术。Magic
Packet,所谓魔包,一般是一个UDP数据报,包含有连续6个字节的FF和连续的重复16次的MAC地址。
对于支持WOL的主板,如果使用板载的网卡,除了在BIOS里面启用WOL外,不需要额外的硬件设置。如果使用单独的网卡,有可能需要与主板进行连线。是否支持WOL以及如何设置,可以查阅主板的说明书。
在公司有两台台式器,一台安装了Linux (Fedora 12),另外一台是Windows XP。XP比较少使用,在家的时候,偶尔需要登录到上面用一下,但是如果因此而整天让它开机的话,又比较费电。所以最好能够在需要的时候,能够先VPN登 陆到Linux机器,然后通过WOL来启动这台XP。
这里以ThinkCenter M5x机器为例,说明如何设置BIOS以启用WOL。
在电脑启动时,按F1进入BIOS设置界面,切换到Power页,跳到Wake on LAN项,选择Automatic,再切换到Devices页,在Network Setup里面,记下显示的十六进制形式MAC地址,然后保存退出即可。
在一般的公司网络中,IP地址都是通过DHCP动态获得的,虽然一段时间内,改变的几率比较小,但是这种可能性是存在的。所以我们需要在机器启动后,自动把机器的IP地址更新到我们肯定可以获取的地方,比如自动把IP地址发送到自己的邮箱。
在这里,我用的方法是把IP地址写到Linux机器上的Samba共享目录下面。
1) 编写内容如下的脚本,保存为bat文件。不要忘记替换IP地址,共享名以及用户名密码。
在脚本中我们调用了一个Java程序Sleep(所以请安装JDK或者JRE),来实现延时,因为系统在刚启动的时候,网络并没有就绪,如果不延迟
几分钟的话,后面映射网络驱动器的步骤就会失败。缺省延时3分钟,如果要改变延时时间,请在java Sleep后面指定时间数值(单位是毫秒)。
下面是Sleep.java的源代码,请自己编译,并把编译后的Sleep.class文件放到bat脚本所在的目录
关于如何设置Samba共享,请参考<使用Samba实现Fedora和Windows系统的文件共享 >
Linux上的WOL客户端的rpm包就叫wol,如果没有安装的话,运行如下命令安装:
$sudo yum install -y wol
wol的使用也很简单,最直接的用法就是后面跟上目标机器的MAC地址(十六进制形式,共12位,每两位以:分隔)。
为方便起见,可以写一个脚本,内容如下(请替换MAC地址):
wol 01:23:45:67:89:AB
每次要启动Windows机器的时候,执行该脚本即可,几分钟后,到共享目录查看生成的文件里面Windows机器的IP地址。
如果要定时启动的话,可以把该脚本加到crontab里面。
另外,关于Windows上的WOL客户端,大家可以搜索Magic Packet。
以上的内容都是基于两台机器在同一个子网的假设的。如果在不同的子网内,需要在路由器或者交换机上做特别的设置。条件所限,我没有机会去尝试,有兴趣和条件的朋友可以参考Cisco网站上的如下文章: