gpt4 book ai didi

windows - 访问时自动唤醒 NAS

转载 作者:可可西里 更新时间:2023-11-01 13:41:28 26 4
gpt4 key购买 nike

我试图让我的 NAS 服务器在用户访问 NAS 时从 S3 sleep 状态唤醒。我想这样做是为了延长服务器的使用生命周期,同时限制其用电量。我见过有人寻求类似的建议,但我发现没有一个提供可靠的解决方案,大多数线程都没有得到答复。

所以快速详细说明我的问题:在我家里,我有一个定制的,从一台旧 PC,NAS 服务器,运行 Ubuntu 服务器,主要存储媒体和文档。此服务器当前设置为在预定义的非事件期后休眠。目前,可以使用 WOL 魔术数据包将 NAS 带出 S3 状态。我想要实现的是,当用户从他们的 PC 访问其中一个共享时,这个神奇的数据包会自动发送到服务器。用户主要运行 Windows 7。我不确定这是否完全普遍,但我有一台运行 DD-WRT 的 Linksys WRT54G 作为我的家庭路由器/DHCP/DNS。

在我的研究过程中,我发现许多文章只是在定时循环中自动唤醒服务器,没有真正的智能。下面给出的文章似乎可以满足我的要求:

http://wdtvhd.com/index.php?showtopic=7908

给出了一个脚本,它试图通过使用 DD-WRT 路由器在进行查询时发送局域网唤醒数据包来解决这个问题。这似乎是解决此问题的好方法,但我无法让链接中给出的脚本正常运行。

我认为这涵盖了我问题的大部分方面。任何帮助将不胜感激。

最佳答案

只是想我会发布我对上述问题的最终解决方案。为了解决这个问题,我写了一个自定义脚本,它在我的 dd-wrt ​​路由器上运行一个定时的 cron 作业。当此脚本运行时,它会访问文件

\proc\net\arp

在该文件中存储了所有当前租用的 IP 地址和相应的 mac 地址的记录。因此,我的脚本将存储在该文件中的 mac 地址与我家庭网络上 PC 的预定义 mac 地址列表进行了比较。该列表仅包含我希望能够访问 NAS 服务器的 PC。如果发现其中一台 PC 具有事件租约,则路由器会发送局域网唤醒魔术包。然后唤醒服务器。那时我认为我已经实现了我的目标,因为服务器与网络上的任何 PC 一起打开,等待的时间也不会太长。但是,完成此操作后,我发现我的服务器定时 sleep 将每 30 分钟左右启动一次,并且服务器仅在几秒钟后再次被唤醒。

因此,为了解决这个问题,我只是在我的条件语句中添加了另一个条件,如果所需的 PC 都没有有效租约,则服务器将进入休眠状态。为此,我使用 SSH 和 DD-WRT 的内置 dropbear ssh 功能让服务器休眠。下面是脚本

#!/bin/ash

NAS="MA:CA:DD:RE:SS:00"

PC="MA:CA:DD:RE:SS:00"

varP='grep -o $PC /proc/net/arp'

while true
do
echo 'Entered Loop'
if ping -c 1 IPADDRESSOFNAS > /dev/null; then
echo 'NAS is Already ON'

if [[ "$varP" != "MA:CA:DD:RE:SS:00" ]]; then
echo 'All Hosts Offline'
echo IPADDRESSOFNAS ssh-rsa NASPUPLICKEY
#HOME=/temp/root/
DROPBEAR_PASSWORD='NASPASSWORD' ssh root@IPADDRESSOFNAS pm-suspend &
fi
exit
fi

if [[ "$varP" == "MA:CA:DD:RE:SS:00" ]]; then
echo 'waking from lan'
/usr/sbin/wol -i BROADCASTADDRESSOFNETORK -p 9 MA:CA:DD:RE:SS:00
/usr/sbin/wol -i BROADCASTADDRESSOFNETORK -p 9 MA:CA:DD:RE:SS:00
exit
fi
exit
done

免责声明:代码按原样提供。我知道这不是很好,也不是最好的解决方案。但它对我有用,这就是我真正需要的。

希望有人觉得这有用!

关于windows - 访问时自动唤醒 NAS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10911825/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com