远程唤醒局域网主机技术Wake On LAN
创作时间:
作者:
@小白创作中心
远程唤醒局域网主机技术Wake On LAN
引用
CSDN
1.
https://blog.csdn.net/m0_38015699/article/details/142546675
WOL用途
Wake on LAN(WOL)技术可以用于远程唤醒局域网内的休眠或关机主机。例如,在学校电教室场景中,老师可以在上课前通过WOL技术一键开启所有电脑,实现统一运维管理。
魔法原理
Wake-on-LAN 的原理其实很简单。我们发送一个特殊的网络包(俗称"魔术包"),包含目标电脑网卡的 MAC 地址。网卡收到这个包后,就会像被一桶冰水泼醒一样,启动整个系统。
准备材料
- Node.js(我们的魔法棒)
- 一台支持 WoL 的电脑
- 目标电脑的 MAC 地址
- BIOS配置
进入BIOS时注意,不同主机不一样,有的F1有的F2,有的需要按下Fn键
测试过四五台主机,发现BIOS默认就是开启的~然后需要注意的就是电池管理,台式机一般也是默认支持,但笔记本就需要检查是否开启省电模式,需要关掉省电模式
编写代码
首先,复制下面的代码,把它保存为 wakeOnLAN.js:
const dgram = require('dgram');
function wakeOnLAN(macAddress, options = {}) {
const {
ipAddress = '255.255.255.255',
port = 9,
attempts = 5,
interval = 100,
} = options;
return new Promise((resolve, reject) => {
const magicPacket = createMagicPacket(macAddress);
const client = dgram.createSocket('udp4');
let attemptsMade = 0;
function sendPacket() {
client.send(magicPacket, 0, magicPacket.length, port, ipAddress, (err) => {
if (err) {
client.close();
reject(err);
return;
}
attemptsMade++;
console.log(`尝试 ${attemptsMade}: 魔术包已发送!`);
if (attemptsMade >= attempts) {
client.close();
resolve(`完成 ${attempts} 次唤醒尝试,希望公主已经醒了!`);
} else {
setTimeout(sendPacket, interval);
}
});
}
sendPacket();
});
}
function createMagicPacket(macAddress) {
if (!/^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/.test(macAddress)) {
throw new Error('MAC 地址格式不对哦,再检查一下呗!');
}
const cleanMac = macAddress.replace(/[:-]/g, '');
const buffer = Buffer.alloc(102);
buffer.fill(0xFF, 0, 6);
for (let i = 1; i <= 16; i++) {
cleanMac.match(/.{2}/g).forEach((hex, j) => {
buffer.writeUInt8(parseInt(hex, 16), i * 6 + j);
});
}
return buffer;
}
测试方法:
wakeOnLAN('00:11:22:33:44:55', { attempts: 5, interval: 100 })
.then(result => console.log(result))
.catch(error => console.error('哎呀,魔法失效了:', error));
使用函数
简单的测试
node wakeOnLAN.js
对外暴露api接口
req.body.pcs.map((e) => wakeOnLAN(e.mac, {
ipAddress: e.ip,
port: e.port,
interval: req.body.interval,
attempts: req.body.attempts
}))
注意事项
- 如果失效了,不要灰心。可能是网络阻塞了你的魔术包,多试几次(5+)。
- UDP会丢包
- 关机后的网卡接收包时并不是一直再监听的,可能是周期性唤醒接受一下
- ip地址需要是域内的网关,例如ip 172.21.1.xxx的主机唤醒,ip需要填172.21.1.255
- 记住,不要用于恶作剧。
结课!
恭喜你!你现在已经掌握了远程唤醒电脑的WOL技术,下次再面对有计算机利旧集群管理时,就不会手足无措啦~有些技术知道了便很简单呢
热门推荐
绩效校准:打造组织高效运转的关键步骤
网络追剧要警惕!
中国微短剧行业数据分析:40.23%消费者偏好言情类出海微短剧
探索光耦:隔离电压——光耦保障电路安全与性能的关键
“世界艾滋病日”健康科普知识 | 科学认识艾滋病
牛肉的最佳搭配指南:从营养到美味的全方位解析
左撇子比用右手的人更聪明,是真的吗?
数据中心网络两种虚拟化技术:堆叠、M-LAG,有啥区别?
图片与内容和谐共存:探索PPT中的排版秘诀
历史文化名城|日喀则
二战军事巅峰对决:斯大林与希特勒,谁才是真正的战略大师?
房贷三十年,其实没那么沉重,背后有这些“小秘密”!
东北四季穿搭攻略:舒适保暖,轻松应对温差变化
具身智能之视觉语言导航(VLN)类别与基准
电热水器上的6个安全装置,记得定期检查,关键时刻能“保命”
英超30年冠军全纪录:曼联13冠领跑,曼城紧追不舍
传说与历史的交织——探索张果老的成仙之道
牛顿晚年沉迷于神学?真相你绝对想象不到
人工智能(AI)的影响下人类的生活样子
哪吒“出海”:我命由我,踏出一条自己的路
汉东省、京海市…国产犯罪剧片不爱用真实地名?
大陆居民如何在香港开设证券账户:全面条件与步骤指南
装修合同避坑指南:如何签订一份公平合理的装修合同
重庆买房攻略:2024年,给你的实用选房建议
权力与忠诚的较量:一场永恒的辩论
5个步骤让你远离失眠多梦 掌握这些技巧,夜夜安睡到天亮
《焚城》:灾难类型片的创伤审美与价值表达
最容易考研的3所985院校 比较好考的985研究生院校
背债200多万去创业,她26岁挣到人生首个1000万
程序员职业发展全攻略:从新手到专家的成长之路