Cubieboard跨网实现远程开机

Cubieboard就不多介绍了,可以完全当一台运行Linux系统的Mini Server,最大特点就是超低功耗,目前我的Cubieboard已经跑了一个应用,三个月下来一直很稳定《Cubieboard Linaro 搭建超节能监控平台》。

家里宽带是那种小区宽带,不能做端口映射,所以一直用向日葵远程控制家里的电脑,最近向日葵推出了一款硬件产品向日葵开机棒,可以跨网实现远程开机,这功能真不错但价格不便宜而且还要按机器数量购买许可,本篇的宗旨就是用CubieBoard实现向日葵开机棒的功能。

先介绍一下基本环境和条件:小区宽带、内网PC一台、内网Cubieboard一枚、外网Linux VPS一台。目的:使用任意连接互联网的设备远程打开内网PC。

首先,设置PC BIOS打开[WOL](Wakeon-LAN),各个主板设置项的名字可能不一样,具体还需要参照主板说明书,设置电源选项进入[Power Management Setup](电源管理设置),有的 BIOS 可能在[Integrated Peripherals]选项中,找到 AC BACK Function 或 PWR Lost Resume State 或 PWRON After PWR-Fail 或 Restore on AC/Power Loss (断电后,电源恢复时的系统状态选择) 设置为[ON/Full-On /Turn-On/Power-On]供电恢复后自动开机,保存BIOS设置,进入操作系统(Windwos 7)选择有线连接网卡属性->配置->电源管理,打开“允许此设备唤醒计算机”。

设置好PC后可以先在内网测试,我家的无线路由是Tomato DualWAN,自带唤醒计算机的功能,也可以直接在你的Cubieboard中安装 Powerwake,前提是Cubieboard刷Linaro系统,参考《Cubieboard Linaro 搭建超节能监控平台

登录Cubieboard运行 sudo apt-get install powerwake,测试执行唤醒命令:

powerwake 00:50:56:C0:00:01 (00:50:56:C0:00:01网卡MAC地址 cmd中ipconfig/all查看)

到这里开机的功能实现了,后面解决如何远程开机。实现方式很多,你可以充分发挥你的想象力,无非就是让你的Cubieboard执行一条powerwake命令而已。我的博客跑在Linode VPS(最稳定的Linux VPS)下面,有个现成的外网主机。我的实现方法是让Cubieboard每分钟自动从我的主机上面下载命令脚本并执行,我只需要修改主机中脚本的内容就可以了。

先在Cubieboard中设置crontab -e 添加

*/1 * * * * /home/linaro/getcmdandexecute.sh

编辑getcmdandexecute.sh脚本

rm -f /home/linaro/cmd.sh
cd /home/linaro && wget http://www.fendou.info/cubie/cmd.sh
chmod 777 /home/linaro/cmd.sh
/home/linaro/cmd.sh

每分钟自动下载http://www.fendou.info/cubie/cmd.sh,下一个执行周期删除。

登录外网的VPS创建cmd.sh(需要远程开机时创建也可以),我的方法是先创建pc.sh内容是powerwake 00:50:56:C0:00:01 用php执行重命名的操作。

创建名为RemotePowerUp.php

<?php
$pc = "pc.sh";
$cmd = "cmd.sh";
if(rename($pc,$cmd)){
sleep(60);
rename($cmd,$pc);
header("Location:rp.php");
}else{
echo "failure";
}
?>

当需要远程开机时,任意联网设备通过浏览器访问RemotePowerUp.php,pc.sh重命名为cmd.sh,1分钟后又改回来,刚好在Cubieboard获取命令的时间周期内,你也可以在前面加个验证。防止别人远程打开你的计算机,至于远程控制方式就不累述了。

《Cubieboard跨网实现远程开机》有4个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注