magic-packet
Version:
发送Wake-on-LAN魔术包唤醒局域网电脑
165 lines (120 loc) • 3.96 kB
Markdown
# magic-packet
一个简单而强大的 Node.js 工具,用于发送 Wake-on-LAN 魔术包唤醒局域网中的计算机。
## 特性
- ✅ 发送魔术包唤醒局域网中的计算机
- ✅ 支持命令行和编程方式使用
- ✅ 支持自定义广播地址和端口
- ✅ 支持多次重试机制
- ✅ 提供Web界面和命令行交互式界面
- ✅ 支持保存和管理常用设备
- ✅ 强大的MAC地址验证
## 安装
### 全局安装
```bash
npm install -g magic-packet
```
### 本地安装
```bash
npm install magic-packet
```
## 使用方法
### 命令行使用
全局安装后,可以直接使用 `magic-packet` 命令:
```bash
# 基本用法
magic-packet -m XX:XX:XX:XX:XX:XX
# 指定广播地址和端口
magic-packet -m XX:XX:XX:XX:XX:XX -i 192.168.1.255 -p 9
# 设置重试次数
magic-packet -m XX:XX:XX:XX:XX:XX -r 3
# 静默模式(不输出日志)
magic-packet -m XX:XX:XX:XX:XX:XX -s
# 查看帮助
magic-packet --help
```
### 在代码中使用
```javascript
const { sendMagicPacket, isValidMacAddress } = require('magic-packet');
// 验证MAC地址格式
if (isValidMacAddress('XX:XX:XX:XX:XX:XX')) {
// 发送魔术包
sendMagicPacket('XX:XX:XX:XX:XX:XX')
.then(() => console.log('魔术包已发送'))
.catch(err => console.error('发送失败:', err));
}
// 指定广播地址和端口
sendMagicPacket('XX:XX:XX:XX:XX:XX', '192.168.1.255', 9)
.then(() => console.log('魔术包已发送'))
.catch(err => console.error('发送失败:', err));
// 使用高级选项
sendMagicPacket('XX:XX:XX:XX:XX:XX', '192.168.1.255', 9, {
retries: 3, // 失败时最多重试3次
silent: true // 不输出日志
})
.then(() => console.log('魔术包已发送'))
.catch(err => console.error('发送失败:', err));
```
## 演示应用
项目包含两个演示应用:
### 命令行交互式演示
```bash
cd demo
npm install
npm start
```
提供了友好的命令行交互界面,可以:
- 发送魔术包
- 保存常用设备
- 管理设备列表
### Web界面演示
```bash
cd demo
npm install
npm run web
```
启动后访问 http://localhost:3006 即可使用Web界面:
- 发送魔术包
- 保存和管理设备
- 直接从设备列表唤醒计算机
## 参数说明
### 命令行参数
- `-m, --mac <address>`: 目标计算机的 MAC 地址 (格式: XX:XX:XX:XX:XX:XX 或 XX-XX-XX-XX-XX-XX)
- `-i, --ip <address>`: 广播地址 (默认: 255.255.255.255)
- `-p, --port <number>`: 目标端口 (默认: 9)
- `-r, --retries <number>`: 发送失败时的重试次数 (默认: 0)
- `-s, --silent`: 静默模式,不输出日志
### API参数
```javascript
sendMagicPacket(macAddress, ipAddress = '255.255.255.255', port = 9, options = {})
```
- `macAddress` (字符串): MAC地址,格式为 XX:XX:XX:XX:XX:XX 或 XX-XX-XX-XX-XX-XX
- `ipAddress` (字符串): 广播地址,默认为 255.255.255.255
- `port` (数字): 目标端口,默认为 9
- `options` (对象): 高级选项
- `retries` (数字): 失败时的重试次数,默认为 0
- `silent` (布尔值): 是否静默模式,默认为 false
## 注意事项
1. 目标计算机必须支持并启用 Wake-on-LAN 功能
2. 需要在目标计算机的 BIOS/UEFI 设置中启用 Wake-on-LAN
3. 如果目标计算机在子网中,可能需要指定正确的广播地址
4. MAC 地址格式必须是 XX:XX:XX:XX:XX:XX 或 XX-XX-XX-XX-XX-XX,其中 XX 是十六进制数字
5. 在某些系统上,发送 UDP 广播包可能需要特殊权限,可能需要以管理员/root 权限运行
## 获取目标计算机的 MAC 地址
1. 在目标计算机开机状态下,使用 `ipconfig /all`(Windows)或 `ifconfig`(Linux/Mac)命令查看
2. 查看目标计算机的网络适配器设置
3. 查看路由器或网络管理界面中的设备列表
## 开发
### 安装依赖
```bash
npm install
```
### 运行测试
```bash
npm test
```
### 代码检查
```bash
npm run lint
```
## 许可证
MIT