はじめに
Webサーバやファイルサーバなどの運用を行っていると、知らぬ間にハードディスクの容量が足りなくなってしまうことがありします。
そこで本稿では、スクリプトを利用して、サーバの状況をメール通知する方法を紹介します。専用のアプリケーションを用意することなく、サーバを監視できるため便利です。
対象読者
サーバ管理者。
必要な環境
- Windowsのみ
- Visual Studio 2005(C#のサンプルを利用する場合)
オーバーストーリー
Windowsには、簡単なプログラミングを行うためのWSH(Windows Script Host)という機能があり、VBS(Visual Basic Script)やJS(JavaScript)で簡単にスクリプトを組み、実行できるようになっています。
またWindowsには、WMI(Windows Management Instrumentation)というWindows自身を管理するためのフレームワークが搭載されています。このWMIは、COMインターフェイス経由でアクセスできます。
何かを自動通知させるのに一番簡単な方法として、メール機能が挙げられるでしょう。CDO(Collaboration Data Objects)という機能もCOMインターフェイス経由でアクセスします。
これらの機能を組み合わせることにより、いろいろなシステム監視を自動化することができるでしょう。
まず、WSHとはどのようなものかを簡単に見ていきます。
WSHの簡単な例
WSHは、先ほども述べたようにVBSやJSでプログラムを書くことができます。今回は一番身近なVBSを利用したいと思います。
下記のソースを「hello.vbs」という名前で保存してください。今回は「c:\Codezine」というフォルダで作業を行いたいと思います。
Wscript.Echo "Hello WSH"
次にコマンドラインを起動して「c:\codezine」フォルダに移動します。
さて、この状態で「hello」とタイプするだけで起動することができます。
いかがでしょうか。このようにWScript.Echoコマンドで、コンソールにメッセージを表示することができました。
このようにvbsのファイルは、ファイル名(拡張子を除く)を指定して実行できるのですが、実際には「c:\windows\system32\cscript.exe」により起動されています。
このcscriptには兄弟がいて、wscriptという実行ファイルも存在します。wscriptで先ほどの「hello.vbs」を起動してみましょう。
このようにコンソールベースがcscript、ウィンドウベースがwscriptと使い分けられています。
またWindowsのx64環境下では、COMの呼び出しが32bitアプリケーションからの場合には32bitのみ、64bitからは64bitのみと制限されてしまうので、32bit版を適宜呼び出す必要があります。
今回のWMIは64bitで問題ありませんが、メール送信が32bit専用ですので32bit版のcscriptを利用するようにしてください。