目次

バッファローのNASをシャットダウンするPerlスクリプト

2011年02月18日 00時11分42秒

どうしてバックアップのスケジュール組めるのにシャットダウンのスケジュールは組めないのさー

バッファローのNAS、安くなって手に入りやすいので、いろんな人が導入してます。筆者も最初の頃に事務所のデータを集約する入れ物としてNASを入れて以来、位置づけが色々変わりながらもずっとこれをメンテナンスしてます。いっつも障害でメンテ停止ばっかりな全社ディスクよりは信用してもらえているようです。※もちろん、きちんとしたバックアップ・過去バージョンへの戻りも可能にしてあるからこそですよ

スクリプト

nas.pl とでもしてください。WWW::Mechanizeがインストールされている必要があります。

nas.pl
use WWW::Mechanize;
 
##            Type    IP                admin ID     passowrd
&shutdownNAS( 'TGL',  '192.168.1.100',  'admin',     'password');
&shutdownNAS( 'TGL',  '192.168.1.101',  'admin',     'password');
&shutdownNAS( 'HTGL', '192.168.1.102',  'admin',     'password');
&shutdownNAS( 'HTGL', '192.168.1.103',  'admin',     'password');
 
sub shutdownNAS()
{
  my ($type,$host,$id,$pass) = @_;
  my $mech = WWW::Mechanize->new( noproxy=>1 );
 
  printf("Shutdown $host NAS .....\n");
 
  if ( $type eq 'TGL' ) {
    $mech->get("http://$id:$pass\@$host/cgi-bin/ts.cgi?page=maintenance&mode=shutdown&type=setup&txtClickButton=shutdown");
  }
  elsif( $type eq 'HTGL' ) {
    $mech->get("http://$host/cgi-bin/top.cgi");
 
    $mech->form_name('frmNas');
    $mech->field( 'txtAuthLoginUser',     $id,           1);
    $mech->field( 'txtAuthLoginPassword', $pass,         1);
    $mech->submit();
 
    $mech->form_name('frmNas');
    $mech->field( 'gPage',                'maintenance', 1);
    $mech->field( 'gMode',                'shutdown',    1);
    $mech->submit();
 
    $mech->form_name('frmNas');
    $mech->field( 'gPage',                'maintenance', 1);
    $mech->field( 'gMode',                'shutdown',    1);
    $mech->field( 'gType',                'shutdown',    1);
    $mech->click('btnShutdownShutdownSubmit');
  }
 
  printf("Shutdown Process end\n");
}

説明

shutdownNAS() でNASのWeb画面へアクセスしてシャットダウンまでの操作を自動で行わせます。

NASのタイプに'TGL'と'HTGL'があります。

TGLは認証にBASIC認証を使うタイプのNASの時に指定します。 HTGLは認証にBASIC認証を使わないタイプのNASの時に指定します。

筆者の知っている範囲ではこんな感じ。

TGLは初期の製品ですね。少なくとも上記のシリーズで1種類ずつテストしたところうまくシャットダウンしてくれてます。

何に使うの?

停電前の自動シャットダウン用。 あ?ファームにsshd仕込んでログインしてcron仕掛ければいいって? 自分の所有するものならそれでもいいんじゃない?