ラベル NS4300N の投稿を表示しています。 すべての投稿を表示
ラベル NS4300N の投稿を表示しています。 すべての投稿を表示

木曜日, 2月 12, 2009

Linux と NS4300N の電源制御連携

[概要]
Linux マシンとNS4300Nとで、APC製UPSを共有する設定を説明しています。
[詳細]
NS4300NはAPC社のUPSを使用して停電時に安全にシャットダウンをする機能がついています。
しかしながら、PCのストレージとしてNASを使用する場合は、サーバをシャットダウンしてからNASをシャットダウンしないと、PC側のデータが壊れたり失われたりする問題が起こります。
そのためには、両者を連携させてシャットダウンを行う必要があります。

さて、NS4300Nの電源制御は、はapcupsdを使用しています。このapcupsdはNIS Serverとして稼動されることが可能です。Clientとしては動作しません。
そこで、Linux マシンにもapcupsdをセットアップして、NS4300Nをサーバ、Linux PCをクライアントして使用することで連携稼動させることが出来ます。

  1. NS4300N側の設定

    1. NS4300N側の事前準備
      この設定を行うためには、NS4300Nへtelnetでログインする必要があります。
      まず、Promise SmartStar NS4300Nのtelnetを有効にするNS4300N Telnet 再有効化を、参考にNS4300Nのtelnetを使用できるようにしてください。

    2. 設定ファイルの編集
      NS4300N側の設定ファイルは、/etc/apcupsd.confです。(apcupsdのデフォルトである/etc/apcupsd/apcupsd.confではないので注意。)
      sudo vi /etc/apcupsd.conf

      次の行を追記します。

      NETSERVER on
      NISIP 0.0.0.0
      NISPORT 6543

      注意:ネットワークの設定をした以降は、UPSの設定に変更を加えたい場合には必ずこのファイルを編集してください。WEBコンソールから変更を加えると上書きされてネットワークの設定が消されてしまいます。

    3. apcupsdの再起動
      apcupsdを再起動します。
      [root@ns4300n]# /etc/init.d/apcupsd stop
      [root@ns4300n]# /etc/init.d/apcupsd start

    4. 起動の確認
      apcaccessを使用してSTATUSがOnlineであることを確認します。
      [admin@ns4300n]# apcaccess
      APC : 001,033,0825
      DATE : Wed Feb 11 22:10:14 GMT-8 2009
      HOSTNAME : ns4300n
      RELEASE : 3.10.17
      VERSION : 3.10.17 (18 March 2005) debian
      UPSNAME : APCUPS
      CABLE : USB Cable
      MODEL : Back-UPS ES 350
      UPSMODE : Stand Alone
      STARTTIME: Wed Feb 11 08:07:36 GMT-8 2009
      STATUS : ONLINE
      <中略>
      BATTDATE : 2000-00-00
      NOMBATTV : 12.0
      FIRMWARE : 23.B1.D USB FW:B1
      APCMODEL : Back-UPS ES 350
      END APC : Wed Feb 11 22:10:14 GMT-8 2009

      apcupsdのサーバとして動作していることを確認します。
      次のように表示されれば正しく動作しています。

      netstat -tan | grep 6543
      tcp 0 0 0.0.0.0:6543 0.0.0.0:* LISTEN

  2. Linuxマシン側の設定

    1. CentOS, RHELを使用している際の事前準備
      CentOS, RHELは、apcupsdを提供していいないので、rpmrepo projectにあるパッケージを使用します。
      ここから、パッケージを入手してyumのリポジトリにRPMforgeを追加します。

    2. apcupsdのインストール
      • CentOS, RHELを使用している際のインストール
        yumを利用してインストールします。
        yum install apcupsd

      • debian, Ubuntuを使用している際のインストール
        aptitude を使用してインストールします。
        aptitude install apcupsd

    3. 設定ファイルの編集
      Linux側の設定ファイルは、/etc/apcupsd/apcupsd.confです。
      sudo vi /etc/apcupsd.conf

      次のように該当する行を変更、または追記します。
      UPSCABLE ether
      UPSTYPE net
      DEVICE NS4300NのIPアドレス:6543


      なお、MINUTESの値は、NS4300Nで設定したMINUTESの値 + Linux PCのシャットダウンに必要な時間を設定してください。
      例えば、NS4300NのMINUTESの値が3分、Linux PCのシャットダウンにかかる時間が2分の場合は、3+2=5(分)と設定します。

    4. apcupsdの再起動
      apcupsdを再起動します。
      [root@linux]# /etc/init.d/apcupsd stop
      [root@linux]# /etc/init.d/apcupsd start

    5. 起動の確認
      apcaccessを使用してSTATUSがSlaveで動作していることを確認します。
      [root@linux]# apcaccess
      APC : 001,032,0836
      DATE : Wed Feb 11 22:24:23 PST 2009
      HOSTNAME : linux
      RELEASE : 3.14.3
      VERSION : 3.14.3 (20 January 2008) redhat
      UPSNAME : APCUPS
      CABLE : Ethernet Link
      MODEL : Back-UPS ES 350
      UPSMODE : Stand Alone
      STARTTIME: Wed Feb 11 22:24:21 PST 2009
      MASTERUPD: Wed Feb 11 22:24:23 PST 2009
      MASTER : 192.168.1.8:6543
      STATUS : ONLINE NOBATT SLAVE

      <中略>
      STATFILE /var/log/apcupsd.status
      LOGSTATS off
      DATATIME 0
      UPSNAME ES350-2

以上で設定は終わりです。
実際にUPSのコンセントを抜いて動作確認をしてみてください。

水曜日, 1月 14, 2009

NS4300N Telnet 再有効化

[概要]
NS4300Nに、Firmware 01.05.0000.03を適用するとtelnetへのアクセスが出来なくなる現象への回避方法を説明しています。
[詳細]
Firmwareを01.05.0000.03へバージョンアップを行うと、
cronが1分毎に"/usr/sbin/chkhttpd"を実行して"/etc/telnet.user"を更新するように変更されてしまいます。
このため、"/data/etc/telnet.user"にユーザの記載があっても、telnetが出来なくなってしまいます。
chkhttpdを置き換えることで、"telnet.user"の上書きを防止まします。
  1. 事前準備
    telnet有効化するプラグインアプリケーションをインストールします。方法はこちら

  2. NS4300Nへのログイン

  3. サービスの開始後、1分以内にNS4300Nへログインしてください。
    cronが実行されログイン出来なくなった場合には、「DLNA Server」の「有効」を実行してください。
  4. 新しいchkhttpdの作成

    1. "/data/"の下に任意のディレクトリを作成します。ここでは"/data/usr/local/sbin"とします。

    2. /usr/sbin/chkhttpdを作成したディレクトリへコピーします。
      sudo mkdir -p /data/usr/local/sbin
      sudo cp /usr/sbin/chkhttpd /data/usr/local/sbin

    3. "/data/usr/local/sbin/chkhttpd"を編集します。
      sudo vi /data/usr/local/sbin/chkhttpd

      最後の4行をコメントアウトしてください。
      #open(OUT,">/etc/telnet.user");
      #print OUT "root\n";
      #print OUT "engmode\n";
      #close(OUT)

  5. /etc/crontabの編集

    1. chkhttpdの行を編集します。
      * * * * * root /usr/sbin/chkhttpd>/dev/null 2>/dev/null
      sudo vi /etc/crontab
      から
      * * * * * root /usr/local/sbin/chkhttpd>/dev/null 2>/dev/null

    2. 再起動後も有効になるように/data/etcにcrontabをコピーします。
      cp /etc/crontab /data/etc/crontab

以上でTelnet 再有効化は完了です。

月曜日, 3月 31, 2008

Promise SmartStar NS4300Nのtelnetを有効にする

[概要]
Promise社のNAS Kit SmartStar NS4300Nの
telnetでのアクセスを有効にする方法を説明しています。
[詳細]
NS4300Nでは、ポート番号2380でtelnetが起動していますが、
adminや作成したアカウントでは、ログインできないようになっています。
しかし、アプリケーションプラグインをhackすることで、telnetでアクセスできるようにすることが出来ます。
  1. 事前の準備
    アプリケーションプラグインを作成するために次の環境が必要です。
    Linuxがインストールされたパソコン。もしくは、Cygwin(dd, tar, gzip, cat, bash, chmodが必要)をインストールしたWindowsパソコン。(筆者は試してません。理論上の話です。)

  2. 正規のDLNAプラグインのインストール

    1. DLNAプラグインをPromise社のサイトからダウンロードします。

    2. ダウンロードしたファイルをNS4300N上にコピーします。

    3. 「管理」→「システム更新」のページに進み、「アプリケーションプラグイン」のタブを選択します。

    4. 保存したファイルを指定して「OK」を押し、アップロードを行います。


      更新中、"System busy. Please waite...."が表示され、


      しばらくするとアップロード成功のダイアログが表示されます。


  3. Hack用のアプリケーションプラグインを作成

    1. 空のディレクトリ(フォルダ)を作成します。

    2. 作成したディレクトリに"rev"という名前で次のファイルを作成します。
      PKGNAME=DLNA
      PKGVERSION=1.0.9999.0
      FWVERSION=010105

    3. ディレクトリ"./DLNA/DLNA/.server"を再帰的に作成し、fuppesというファイルを作成します。
      #!/bin/ash

      echo "admin ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
      echo "admin" >> /etc/telnet.user
      cp /etc/sudoers /data/etc
      cp /etc/telnet.user /data/etc

    4. 作成したファイルに実行権を付与します。
      chmod +x ./DLNA/DLNA/.server/fuppes

    5. 作成したディレクトリをアーカイブします。
      tar cvfz telnet-hack.tgz ./rev ./DLNA

    6. プラグインアプリケーションのファイルを作成します。
      dd if=/dev/urandom of=telnet-hack bs=97k count=1

    7. アプリケーション・ファイルに、アーカイブを追加します。
      cat telnet-hack.tgz >> telnet-hack


    作成が難しい方は、私が作成したイメージをここからダウンロードして使ってください。
    使用については、あくまで自己責任でお願いします。
  4. 作成したアプリケーションプラグインのインストール

    1. 作成したファイルをNS4300N上にコピーします。

    2. 正規のプラグインと同様に、ファイルを指定して「OK」を押します。


      しばらくするとアップロード成功のダイアログが表示されます。


  5. アプリケーションプラグインの実行

    1. 「ファイルとプリンタ」→「プロトコル制御」のページで、「情報」のタブを開きます。

    2. 登録したアプリケーション「DLNA Server」の「有効」ボタンを押します。

      しばらくするとアプリケーション開始成功のダイアログが表示されます。




    3. 以上で設定は終了です。DLNAを使用したい時には、正規版を再インストールしてください

  6. 接続確認
    telentコマンドで、ログインできることを確認します。
    [root@linux ~]# telnet ns4300n 2380
    Trying 192.168.1.9...
    Connected to ns4300n (192.168.1.9).
    Escape character is '^]'.
    NS4300N R1.5 A1 (Version 01.05.0000.03) - Promise Technology, INC.
    lukather login: admin
    Password:


    BusyBox v1.00-rc2 (2006.11.07-01:55+0000) Built-in shell (ash)
    Enter 'help' for a list of built-in commands.

    admin is allowed to login.
    [admin@ns4300n]#

もとのネタは、こちらにありましたが、リンクが切れてしまいました。