golang---实现wake on lan
实现逻辑
就是通过UDP向广播地址255.255.255.255:9发送一个称为“魔术包”的数据包。被唤醒主机关机之后需要和程序所在主机通过网线连接,才能收到这个数据包。被唤醒主机收到之后就会开机。
配置需要被唤醒的主机
我的台式主机试DELL的,dell官网有相关的配置方法,其他的可能有区别需要查询
我的主机配置方法
实施唤醒操作的程序
要注意的是
:程序所在的主机,要确保一定有一次的数据包是通过那个有限网卡发出去的,可以在程序中指定从哪个网卡发出,或者控制主机的无线网络,或者每个网卡都发一次
指定网卡发送UDP数据包
var help = `
环境说明:1. 被唤醒主机要支持Wake on Lan功能且已开启该功能2. 被唤醒主机在关机时应该是有线连接3. 请确保该程序与被唤醒主机在同一局域网中
参数说明:-mac 被唤醒主机的MAC地址 (必须输入)-nic 指定网卡发送唤醒魔包
使用说明:wol -mac 11:22:33:44:55:66 -nic eno1
注意事项:1. 路由器设备或有些主机有多张网卡, 如果不指定网卡唤醒魔包可能到达不了被唤醒主机2. MAC地址的格式可以是以下几种形式11:22:33:44:55:66 或11-22-33-44-55-66 或11:22-33:44:55-66 或112233445566
`
func main() {err := wakeNew()fmt.Println("wakeNew err = ", err)
}func wakeNew() error {macAddr := flag.String("mac", "xx:xx:xx:xx:xx:xx", help)//被唤醒主机的MAC地址,这里通过一条网线连接的,可以在网络适配器看见整个以太网地址nic := flag.String("nic", "以太网 2", help)flag.Parse()if len(*macAddr) == 0 {return errors.New(fmt.Sprintf("%s\n", help))}hw := strings.Replace(strings.Replace(*macAddr, ":", "", -1), "-", "", -1)if len(hw) != 12 {return errors.New(fmt.Sprintf("MAC: [%s] 输入不正确.\n", *macAddr))}macBytes, err := hex.DecodeString(hw)if err != nil {fmt.Println("DecodeString err = ", err)return err}// 构造 Magic Packet 数据包var magicPacket bytes.Bufferfor i := 0; i < 6; i++ {err := magicPacket.WriteByte(0xff)if err != nil {fmt.Println("WriteByte err = ", err)}}for i := 0; i < 16; i++ {_, err = magicPacket.Write(macBytes)if err != nil {fmt.Println("magicPacket Write err = ", err)}}sender := net.UDPAddr{}if len(*nic) != 0 {ip, err := interfaceIPv4ByName(*nic)if err != nil {err = errors.New(fmt.Sprintf("网卡[%s]错误: %s", *nic, err))return err}sender.IP = ip}// 发送 Magic Packettarget , err := net.ResolveUDPAddr("udp", "255.255.255.255:9")if err != nil {fmt.Println("ResolveUDPAddr err = ", err)return err}//也可以这样写
// target := net.UDPAddr{// IP: net.IPv4bcast,
// Port: 9,
// }conn, err := net.DialUDP("udp", &sender, &target)if err != nil {fmt.Println("DialUDP err = ", err)return err}_, err = conn.Write(magicPacket.Bytes())if err != nil {fmt.Println("conn.Write err = ", err)return err}fmt.Println("Wake-on-LAN packet sent!")return nil
}
golang---实现wake on lan相关推荐
- 在Linux下通过Wake On LAN实现网络唤醒远程开机
我们经常有这样的场景或需求,人在外面,需要将家里的机器或公司的机器开启,进行远程控制操作. 有几种方式可以实现远程开机,一是通过主板的来电自启动,通过智能开关远程开机.还有一种方式就是可以通过一台已经 ...
- 主板开启网络唤醒(Wake on lan)
记录几个主板开启网络唤醒的链接: 华硕主板实现Wake on lan 网络唤醒的种种细节: https://blog.csdn.net/weixin_44607961/article/details/ ...
- 总结几点 Wake On Lan (WOL) 失败的原因
正文 在我想使用 Wake On Lan(后文皆用 WOL 代替)这项技术远程开机时,总是失败,在查阅各种资料后成功使用上了 WOL,下面总结几点导致失败的原因. 1,发送 Magic Packet( ...
- 无线wifi如何远程唤醒?wake on lan网络唤醒及远程控制踩过的坑!
相信好多人都有远程唤醒自家电脑的这个需求,我也因各种原因折腾了好久-直到现在,也算是没那么折腾了,在这里不说配置细节,只说说远程开机唤醒的特定要求.遇到问题.解决方案,让能有幸看到人同学少走点弯路! ...
- 使用Wake On Lan远程唤醒
使用Wake On Lan远程唤醒 客厅里的那台htpc,在无下片任务的时候,大部分时间里都在白白浪费电.主板是支持wake on lan的,把它弄成可以远程控制会比较经济. 首先要设置bios,将电 ...
- 基于OpenWrt的Wol(wake on lan)远程唤醒
原理:向支持唤醒的网卡,发送特定格式的数据帧,从而启动计算机.正想起名字Wol,wake on lan 一样,是通过lan口发送的数据.所以设备要通过网线和路由器相连. 功能比较好实现,只有两个点: ...
- 设置网络唤醒电脑(WAKE ON LAN,WOL)
网络唤醒,就是通过有线网卡的形式,向电脑发送魔术包(Magic Packet),让电脑自动开机. 在支持ErP省电技术的主板下,必须要关闭ErP选项. 进入bios中设置,让主板支持通过(由PCI-E ...
- wake on lan 远程唤醒/远程开机中的所有设置细节(arp静态绑定解决长时间关机无法唤醒)
远程开机这个功能实在屌爆了,工作中会经常遇到需要远程开机的情景,比如说,晚上在家里,突然接到领导的电话需要改东西,然而家里的电脑又没有工作环境,各种工具软件都没有安装,这时如果往公司跑一趟真是麻烦,或 ...
- WOL wake on lan 功能 nodejs android kotlin实现
有些机器支持WOL功能,可以远程唤醒机器, 几乎所有品牌的硬件都支持WOL,由于安全原因,可能在软件上默认WOL处于关闭状态 原理 WOL(Wake on Lan),即局域网唤醒,从根本上来说是硬件设 ...
- NAS折腾笔记之Wake On LAN和远程管理
最近对华硕的印象很差,几年前组的台式机,为了带大显卡和多显卡,买了全尺寸的大板z170 pro gamming.结果这板子没发挥啥作业就吃灰了.最近把他翻出了玩truenas,结果wake on la ...
最新文章
- shell脚本判断输入参数个数
- log4j2配置文件的故事
- MapReduce论文中文版
- [转]将Ubuntu默认的邮件客户端Evolution替换为Thunderbird
- Boost:使用Qt加载图像,应用简单的框模糊滤镜
- 函数使用了堆栈的字节超过_在C语言中如何访问堆栈?
- 智表ZCELL产品V1.4.0开发API接口文档 与 产品功能清单
- 如何搭建数据标准管理平台
- 操作系统(一)—— 操作系统概论
- 将EXCEL自定义时间格式转换为时间格式
- 企业微信获取用户php,微信企业号获取用户授权登陆信息
- matlab小波变换、离散小波变换函数使用
- java 拼多多电子面单打印_商家自定义模板
- Halcon视觉检测——使用分类器分类
- 学习java怎么样?后期能挣钱吗?
- 开发常用镜像站 - 阿里云镜像站
- 2021软件工程保研经历
- win7家庭版怎么把计算机显示桌面,Win7怎样显示桌面
- js屏蔽鼠标左右键和键盘按键功能
- Windows系统提示应用程序无法正常启动(0xc0000142)解决方法
热门文章
- 微星主板在停过电后无法被远程开机
- “连邦十年(1994——2004)用户心中十大最具影响力国产软件评选”揭晓
- 墨菲定律、二八法则、马太效应、彼得原理、酒与污水定律、水桶定律、蘑菇管理原理等13条是左右人生的金科玉律。...
- 怒江水电开发的争议与对工程实践的认识
- Java封装redis工具类RedisUtils,以及在@Postconstruct注解中调用redis可能出现redisTemplate空指针异常
- 以智慧城市为标杆打造立体防控,咫尺之间华丽转身
- 详解设计模式:中介者模式
- AAA企业信用评级的好处
- 初一下册计算机教案,七年级下册信息技术教案
- 全国顶尖网安创业20强诞生 锘崴科技实力上榜