5

ユーザーがNASにアクセスしたときに、NASサーバーをS3スリープ状態から復帰させようとしています。サーバーの寿命を延ばし、電力使用量を制限するために、これを実行したいと思います。同様のアドバイスを求める人々を見たことがありますが、堅牢なソリューションを提供するものは見つかりませんでした。ほとんどのスレッドは答えられずに終了しました。

だから私の問題を簡単に詳しく説明します:私の家には、主にメディアとドキュメントを保存するUbuntuサーバーを実行している古いPC、NASサーバーからカスタムビルドされています。このサーバーは現在、事前定義された非アクティブ期間の後にスリープするように設定されています。現在、NASはWOLマジックパケットを使用してS3状態から抜け出すことができます。私が達成したいのは、ユーザーがPCから共有の1つにアクセスすると、この魔法のパケットがサーバーに自動的に送信されることです。ユーザーは主にWindows7を実行しています。これが完全に普及しているかどうかはわかりませんが、ホームルーター/ DHCP/DNSとしてDD-WRTを実行しているLinksysWRT54Gがあります。

私の調査中に、実際のインテリジェンスではなく、時限ループでサーバーを自動的に起動する多くの記事に出くわしました。以下の記事は私が望むことをしているようです:

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

クエリが行われたときにDD-WRTルーターを使用してwake-on-lanパケットを送信することにより、この問題に対処しようとするスクリプトが提供されます。これはこれを行うための良い方法のようですが、リンクで指定されたスクリプトを正しく動作させることができませんでした。

それは私の問題のほとんどの側面をカバーしていると思います。どんな援助も大歓迎です。

4

3 に答える 3

3

上記の問題に対する最終的な解決策を投稿すると思いました。この問題を解決するために、時間指定された cron ジョブで dd-wrt ​​ルーターで実行されるカスタム スクリプトを作成しました。このスクリプトを実行すると、ファイルにアクセスします

\proc\net\arp

そのファイル内には、現在リースされているすべての IP アドレスと対応する MAC アドレスの記録が保存されます。したがって、私のスクリプトは、そのファイルに保存されている MAC アドレスを、ホーム ネットワーク上の PC の事前定義された MAC アドレスのリストと比較しました。このリストは、NAS サーバーにアクセスできるようにしたい PC だけで構成されています。PC の 1 つがアクティブなリースを持っていることが判明した場合、ルーターは wake-on-lan マジック パケットを送信します。次に、サーバーを起動します。その時点で、ネットワーク上のいずれかの PC でサーバーの電源が入ったので、目標を達成したと思いました。待ち時間はそれほど長くはありませんでした。ただし、これを完了した後、サーバーのタイマー付きスリープが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

免責事項: コードは現状のまま提供されます。私はそれがきれいでも最善の解決策でもないことを知っています. しかし、それは私にとってはうまくいき、それが私が本当に必要としているすべてです.

誰かがこれが役に立つことを願っています!

于 2012-08-16T16:34:50.637 に答える
0

NASをWDから検査しましたが、/ tmp、/varディレクトリにメモリドライブを使用していることがわかります。

したがって、すべてのログがメモリに書き込まれ、ハードドライブがオンラインである必要はありません。それが少しお役に立てば幸いです。

誰かがハードドライブにアクセスしたい場合、システムは自動的にハードドライブをアップスピンします。したがって、システムが常にオンラインであることを除いて、必要なものを入手できます。

于 2012-06-06T09:54:36.810 に答える