Git Product home page Git Product logo

wol's Introduction

WOL

这是一个使用 go 编写的简单的 WOL(Wake on LAN) 工具,主要用于远程开机(需要主板支持),工具参考了 sabhiram/go-wol 的部分代码

安装

wol 使用 Go 编写,运行时只需要一个单独的二进制文件即可执行;用户可以从 RELEASE 页下载预编译的二进制文件到本地执行;以下为 Linux 安装示例:

# 后续新版本发布请自行修改版本号
export WOL_VERSION='v1.0.1'

# 此命令将下载 Linux 系统 x64 架构的预编译文件,其他架构、平台请自行替换
wget https://github.com/mritd/wol/releases/download/${WOL_VERSION}/wol_linux_amd64

# 增加可执行权限
chmod +x wol_linux_amd64

# 移动到 PATH 目录
mv wol_linux_amd64 /usr/local/bin/wol

# 运行测试
wol --help

使用

wol 工具默认读取家目录($HOME)下的 .wol.yaml 配置文件,并从该配置文件中获取当前存在的主机列表以及得知如何发送数据包; 默认情况下该配置文件不存在,且 wol 工具也不会自动创建,所以直接运行 print、wake 等命令可能会出现相关错误提示,属于正常情况。

在使用之前请执行 wol example > ~/.wol.yaml 创建样例配置文件,以下为 wol 命令列表:

  • wol example: 向控制台输出 WOL 的样例配置文件
  • wol wake 主机名/Mac地址: 唤醒某台主机
  • wol add --name 主机名 --mac Mac地址: 向配置文件中增加一台主机
  • wol del 主机名/Mac地址: 从配置文件中删除一台主机
  • wol print: 打印配置文件中所有主机列表

使用样例:

# 唤醒名字为 iMac 的主机(真正的 mac 电脑似乎不支持远程开机)
wol wake iMac

# 使用 Mac 地址进行唤醒
wol wake E0:D5:5E:6E:30:C9

# 添加一台叫做 nas 的主机
wol add --name nas --mac E1:D2:3E:6E:20:C5

# 删除一台叫做 nas 的主机
wol del nas

# 通过 Mac 地址来删除
wol del E1:D2:3E:6E:20:C5

# 显示当前配置文件中的所有主机
wol print

其他更详细的使用请使用 --help 选项查看帮助文档(支持子命令的 --help 选项):

➜ wol --help
NAME:
   wol - Wake-on-LAN TOOL

USAGE:
   wol [global options] command [command options] [arguments...]

VERSION:
   v1.0.0 2020-12-07 16:26:16 b36316e772b9ca3abecb6b34fd05797ccbd98044

AUTHOR:
   mritd <[email protected]>

COMMANDS:
   add      add device
   del      del device
   wake     wake device
   print    print devices
   example  print example config
   help, h  Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --config value, -c value  wol config (default: "$HOME/.wol.yaml") [$WOL_CONFIG]
   --name value, -n value    device name
   --mac value, -m value     device mac address
   --help, -h                show help (default: false)
   --version, -v             print the version (default: false)

COPYRIGHT:
   Copyright (c) 2020 mritd, All rights reserved.

配置

默认配置文件格式可以通过 wol example 查看:

~ wol example

devices:
- name: iMac
  mac: e0:d5:5e:6e:30:c9

主机配置默认存储在 $HOME/.wol.yaml 中,这是一个标准的 yaml 配置文件,除了 namemac 字段外完整的配置文件支持列表如下:

# 被隐藏的配置属于高级配置,除非你明确了解其含义和作用,否则不建议修改
# 错误修改只会导致发送的唤醒命令失败
devices:
- name: iMac
  mac: e0:d5:5e:6e:30:c9
  # 数据包发送端口
  port: 7
  # 数据包发送接口
  broadcast_interface: eth0
  # 数据包发送 IP
  broadcast_ip: 192.168.2.1

自动提示

针对于习惯命令行操作的高级用户,大部分人可能更习惯使用 tab 键来实现自动完成;wol 命令提供了自动完成支持包括 zsh,以下为自动完成的配置说明:

bash 用户

bash_autocomplete.jpg

  • 下载 autocomplete/bash_autocomplete 文件到任意位置
  • 确保已经安装好了 wol 工具(在 PATH 中可以找到)
  • ~/.bashrc 中添加 PROG=wol source path/to/cli/autocomplete/bash_autocomplete(路径请自行替换)
  • 退出 bash 重新登录,或执行 source ~/.bashrc 命令
  • 最后执行 wol + tab 进行测试是否有智能提示

zsh 用户

zsh_autocomplete.jpg

注意: 以下仅在 ohmyzsh 测试成功,标准 zsh 理论上也兼容

  • 下载 autocomplete/zsh_autocomplete 文件到任意位置
  • 确保已经安装好了 wol 工具(在 PATH 中可以找到)
  • ~/.zshrc 中添加 PROG=wol _CLI_ZSH_AUTOCOMPLETE_HACK=1 source path/to/cli/autocomplete/zsh_autocomplete(路径请自行替换)
  • 退出 bash 重新登录,或执行 source ~/.zshrc 命令
  • 最后执行 wol + tab 进行测试是否有智能提示

powershell 用户

...powershell 用户请自行参考 urfave/cli 文档

wol's People

Contributors

mritd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

wol's Issues

配置流程说明建议

首先非常感谢您的创作!

软件其实非常好用及简单.但是很多新上手的用户可能不容易摸索出一个简单的安装流程,因为说明不够,我这边摸索完了,有一个简单心得,如果作者不嫌弃,可以把我这个流程说明里面认为有用的部分加到你外面的readme.md里面,可能这样对推广有一些好处.

运行wol生成样板配置文件,因为缺省情况下 wol 只读取 $HOME/.wol.yaml 配置文件(即当前登录用户自己的目录,如NAS设备登录是root用户,那么这个$HOME/目录表示/home/root/目录)

#wol example > ~/.wol.yaml

增加自己设备的参数到样板配置文件,机器名字pc可以随便命名,不过建议小写字母,因为linux大小写敏感,另外由于不确定程序大小写支持情况,所以MAC地址确保是大写!!!

#wol add -n pc -m 00:F8:61:CD:A4:82

唤醒指定机器名字

#wol wake pc

列出样板配置里面所有机器的列表

#wol print

删除样板配置缺省的无用机器参数

#wol del iMac

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.