0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Autojs如何实现WakeUpOnline远程开机

汽车电子技术 来源:安卓脚本 作者:Mr.Yu 2023-03-03 13:41 次阅读

就是字面意思, 比如人在外面玩, 只需要手机一点,即可将家里的电脑打开.这个东西其实也没啥好解释的. 不想在遇到群里的那种无脑杠的人, 我想用软件实现这个功能, 非得说让我买个硬件放在家里.对不起,我没钱...

远程唤醒功能需要主板支持, 理论上10年内买的电脑, 主板上都有这个功能, 如果没有,那就用不了这个,只能自己买硬件去吧.首先说一下整个流程的配置.

第一步 先检查自己的主板bios里面有没有wol的开启功能,具体的开启步骤,我不说,这个自行百度一下, 因为主板型号不同,开启的地方不一样,所以用你的"主板型号+怎么开启wakeuponline功能" 当关键词去百度搜索,把wol功能打开. 至于说什么要去windows系统的硬件管理中 允许网卡唤醒启动的设置呢, 可开可不开, 我是没设置系统的限制,都是默认, 也能从远程正常唤醒

第二步 设置路由器,路由器上做端口映射,有些路由叫虚拟服务器啥的,也有不同的叫法, 目的是将内网机器的端口映射到wan口,在外网可以访问到这个端口. 端口号固定是9号端口,这里截图你们自己对照看一下自己的路由器怎么设置.

图片

端口映射出去之后, 一般家里的IP都是动态IP, 经常会变,这里我们再设置一下DDNS(动态域名), 域名呢, 可以自己找免费的,也可以自己花个一二十块钱买个垃圾点的域名. 常见的有什么花生壳啦, dnspod啦,都可以做DDNS服务,这个一般路由器上也都有的, TPLINK 水星什么的也都有预设这个功能. 所以也不是什么难点.

最后一步就是用autojs去唤醒了, 代码也很简单, 此代码是从google上随便搜的, 然后改成autojs可用的. 但是貌似在局域网直接用IP来唤醒,好像无效, 然后我也没怎么研究, 本来内网唤醒,不是本次研究的重点. 所以怎么远程唤醒,才是重点...

那么重点来了, 上代码:

var domainName = "ddns.XXXX.online";
 //mac地址是冒号为分隔符的格式,不要用其他格式
 var macAddress = "00:8d:5c:88:94:b5";


 var wol = new wakeUpOnline();
 var res = wol.wakeUp(domainName, macAddress, 9);
 log(res);

 function wakeUpOnline() {
     importClass(java.net.InetAddress);
     importClass(java.net.DatagramPacket);
     importClass(java.net.DatagramSocket);
     importClass(java.lang.Integer);
     importClass(java.lang.System);
     /**
      * 使用autojs在外网远程打开局域网内的电脑 本方法仅用于外网. 不适用于无线网卡
      * @param {string} host     路由器的wan口iP或者域名
      * @param {string} mac      被远程开机电脑的网卡mac地址
      * @param {int} port        开机端口号, 内网为9号端口. 这里填你映射出去的端口号
      * @returns 
      */
     this.wakeUp = function(host, mac, port) {
         try {
             let macBytes = getMacBytes(mac);
             let bytes = util.java.array('byte', 6 + 16 * macBytes.length);
             for (let i = 0; i < 6; i++) {
                 bytes[i] = 0xff - 256;
             }
             for (let i = 6; i < bytes.length; i += macBytes.length) {
                 System.arraycopy(macBytes, 0, bytes, i, macBytes.length);
             }
             let address = InetAddress.getByName(host);
             let packet = new DatagramPacket(bytes, bytes.length, address, port);
             let socket = new DatagramSocket();
             socket.send(packet);
             socket.close();
             return "wol_package_sent_success";
         } catch (e) {
             console.log("错误信息: ", e.message);
             console.log("错误发生在第%s行", e.lineNumber);
             console.log("错误文件", e.fileName);
             return "wol_package_sent_fail";
         }
     }
     function getMacBytes(mac) {
         let bytes = util.java.array('byte', 6);;
         let hex = mac.split(":");
         if (hex.length != 6) {
             throw "Invalid MAC address.";
         }
         try {
             for (let i = 0; i < 6; i++) {
                 int = Integer.parseInt(hex[i], 16);
                 if (int > 127) {
                     int = int - 256;
                 }
                 bytes[i] = int;
             }
         } catch (e) {
             console.log("错误信息: ", e.message);
             console.log("错误发生在第%s行", e.lineNumber);
             console.log("错误文件", e.fileName);
             throw "Invalid hex digit in MAC address.";
         }
         return bytes;
     }
 }

实现远程开机的功能就这么简单. 可以自己再写个UI界面来包装一下.好了,这次的分享就这么多.

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • IP
    IP
    +关注

    关注

    5

    文章

    1407

    浏览量

    148296
  • 域名
    +关注

    关注

    0

    文章

    64

    浏览量

    11193
  • 端口
    +关注

    关注

    4

    文章

    820

    浏览量

    31593
收藏 人收藏

    评论

    相关推荐

    如何实现远程登录ssh并配置为开机启动

    今天教论坛的发烧友们如何实现远程登录ssh,并配置为开机启动!千万要注意的一点,ssh和ssl不能混淆安装并运行ssh1,安装sshapt-get install openssh-server2
    发表于 09-12 10:32

    python黑客操作:远程开机和关机

    前言用 python 关机相信大家肯定听过或者实践过吧,那么用 Python 开机呢?这是一个神奇的方法,教你如何用 Python 来开机。本文目标远程开机原理Python
    发表于 01-19 20:22

    如何用Java实现远程开关机

    Java实现远程开关机是做的一个在局域网下实现一台机器对多台机器的开关机控制远程唤醒实现是通过电源的一种协议进行控制的,需要知道被唤醒机器的
    发表于 10-28 08:28

    NodeMCU实现远程电脑开关机

    NodeMCU实现远程电脑开关机1.WOL(Wake on Lan)2.阿里云物联网平台设置3.NodeMCU部分程序编写一直都有在公司需要远程连接家里的台式电脑的需求,远程连接控制的
    发表于 10-29 06:02

    有什么方法可以改远程开机设备的硬件ESP8266模块增加供电电路吗

    有什么方法可以改远程开机设备的硬件ESP8266模块增加供电电路吗?
    发表于 03-01 07:11

    如何去实现一种基于RT-Thread+RA6M4的远程开机助手设计

    1、基于RT-Thread+RA6M4的远程开机助手概要要达到远程访问自家电脑需要解决两个问题如何通知电脑开机和如何构建远程连接的网络通道。
    发表于 06-20 10:42

    Python+微信一键连接实现远程管理Windows10操作系统的开机和关机

    首先通过微信发送开机指令,这里我使用的是 itchat 程序会调用 Paramiko 库去 SSH 远程到内网的树莓派执行 WakeOnLan 命令去唤醒 Windows 主机。
    的头像 发表于 02-25 09:17 5960次阅读

    STM8学习之通过UID码实现开机产生随机数

    STM8学习之通过UID码实现开机产生随机数
    发表于 03-16 15:32 10次下载
    STM8学习之通过UID码<b class='flag-5'>实现</b><b class='flag-5'>开机</b>产生随机数

    使用单片机实现开机开机显示PC机时分秒的时钟的仿真文件免费下载

    本文档的主要内容详细介绍的是使用单片机实现开机开机显示PC机时分秒的时钟的仿真文件免费下载。
    发表于 03-18 14:09 18次下载

    教大家MPSOC如何实现HDMI开机画面显示

    目前基于MPSOC的一些参考设计中并没有实现开机画面的功能 ,那在一些带显示屏的产品在设计的时候就需要这一功能,基于原来传统的方式也可以在FPGA中来实现,今天分享一个在PS侧来实现
    的头像 发表于 07-22 09:23 2434次阅读
    教大家MPSOC如何<b class='flag-5'>实现</b>HDMI<b class='flag-5'>开机</b>画面显示

    手机控制NodeMCU实现远程电脑开关机

    NodeMCU实现远程电脑开关机1.WOL(Wake on Lan)2.阿里云物联网平台设置3.NodeMCU部分程序编写一直都有在公司需要远程连接家里的台式电脑的需求,远程连接控制的
    发表于 10-22 14:51 11次下载
    手机控制NodeMCU<b class='flag-5'>实现</b><b class='flag-5'>远程</b>电脑开关机

    基于MPSOC实现HDMI开机画面显示

    目前基于MPSOC的一些参考设计中并没有实现开机画面的功能 ,那在一些带显示屏的产品在设计的时候就需要这一功能,基于原来传统的方式也可以在FPGA中来实现,今天分享一个在PS侧来实现
    发表于 08-02 10:23 895次阅读
    基于MPSOC<b class='flag-5'>实现</b>HDMI<b class='flag-5'>开机</b>画面显示

    如何在Autojs中优雅的使用webView

    对于需要写UI的脚本来说,使用安卓的xml方式去写一个好看的UI出来,在autojs中就显得过于艰难,虽说autojs在很早之前就支持了安卓原生的方式写UI,但对于只会js的我来说还是太难了
    的头像 发表于 03-03 13:40 3781次阅读
    如何在<b class='flag-5'>Autojs</b>中优雅的使用webView

    Autojs后台静默发短信

    要判断是否发送成功和接收成功,就需要注册两个广播的监听.来得到结果.下面分别记录一下免费版Autojs和AutojsPro8.0以上的版本如何注册一个监听.
    的头像 发表于 03-03 13:47 2092次阅读

    如何使用Autojs给指定QQ好友点赞

    使用Autojs来给自己的好友点赞,复制下面的代码到autojs这个脚本工具中,执行即可!
    的头像 发表于 03-03 14:24 765次阅读