プロデルでディスク空き容量監視バッチを作る

プロデルを使って、ディスクの空き容量を監視して、10%以下になったら警告メールを送信するバッチを作ります。
プロデルは、monoをインストールすればWindowsのみならずLinuxやMacOSでも動作しますので、VPSに構築したLinuxにこのバッチを入れておくという用途に使えます。

//checkdisksize.rdr
ドライブ情報(「/」)を作ってDとする
空き割合は、Dの空き容量/Dの容量

もし空き割合が0.1以下なら

    システムメールサーバというアカウントを作る
    システムメールサーバの送信サーバのサーバ名は、「server@myserver.com」
    システムメールサーバの送信サーバのポート番号は、587

    システムメールサーバの送信サーバの送信者名は、「myserver.com」
    システムメールサーバの送信サーバの認証は、○
    システムメールサーバの送信サーバのユーザ名は、「server@myserver.com」
    システムメールサーバの送信サーバのパスワードは、「」

    通知メールという送信メールを作る
    通知メールの件名は、「空き容量警告」
    通知メールの宛先は、「server@myserver.com」
    通知メールの本文は、「残り容量が[Dの空き容量/1024/1024]MB ([空き割合*100]%)になりました。」
    通知メールをシステムメールサーバから送る

もし終わり

『ドライブ情報(「/」)を作ってDとする』の部分で、空き容量を調べるドライブを指定します。
このプログラムは、Linux用に書いていますので、Windowsの場合は次のように書けば、Cドライブの空きサイズを取得できます。

ドライブ情報(「C」)を作ってDとする

なお、指定できるドライブ一覧は、次のように書くことで調べることもできます。

ドライブの一覧を報告する

CentOSでプロデルを動作させる

プロデルは、MonoをインストールすることでLinuxとMacOS環境で動作します。

プロデルでは、CUI向け実行環境(pconsole.exe)が用意されています。
次のようにコマンドラインを指定することで、mono環境下でもプロデルで書いたスクリプトを実行できます。

$ mono pconsole.exe batch.rdr

mono環境下で動作させるには

上記のようなコマンドラインでスクリプトを実行させるようにするには、monoをインストールして、プロデルのランタイム環境を展開します。

  1. monoをインストールします。
    主要なディストリビューション向けのバイナリ形式がインストール手段と共に提供されていますので、通常はmakeしてコンパイルする必要はありません。CentOS7といったRedHat系は、yumを使ってインストールできますので、VPSなどOSが選べる場合にはこちらを利用してインストールするのがおすすめです。

    $ yum install yum-utils
    $ rpm --import "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF"
    $ yum-config-manager --add-repo http://download.mono-project.com/repo/centos/
    $ yum install mono-complete
    
  2. mono版プロデルをタウンロードした上で、任意のディレクトリに展開します。こちらも展開すればすぐに利用できます。
    $ cd /home/produire/
    $ mkdir rdr
    $ cd rdr
    $ wget http://rdr.utopiat.net/files/mono/produire-mono-1.5.tar.gz
    $ tar tvzf produire-mono-1.5.tar.gz
    $ mono pconsole.exe /e 時刻を報告する
    

最後のコマンドを実行して、時刻が表示されればプロデルの実行環境ができあがりました。
なお、プロデルではプログラムの文字コードにUTF-8/UTF-16/EUC-JP/Shift_JISが利用できます。例えばターミナルの文字コードを予めUTF-8にしておけば、vimでもスクリプトを変更できます。

cronを設定する

Linuxサーバ上でcronを使って定期的に空き容量を監視させたい場合には

$ crontab -e

した後に

* 0-23/1 * * * cd /home/produire/rdr/;mono pconsole.exe checkdisksize.rdr

などと指定することで1時間ごとにチェックさせることができます。

Windowsで定期的に実行するには

Windowsの場合は、タスクスケジューラ で指定した時間にプログラムを実行させることができます。

日本語プログラミングでバッチ処理を書くメリット

シェルスクリプトやPowerShellなどのバッチ処理系が充実しているので、わざわざプロデルで作る必要もないかと思われるかもしれません。

バッチスクリプトは、一度作成すると、その後ほとんど手を付けることはありません。ただその後サーバの構成が変化して、バッチを修正する機会があると思います。その時に、スクリプトにしっかりコメントを残していないと、何をしているのかすぐに思え出せない、これが必要なのか無駄なのかわからない。ということもあると思います。

日本語プログラミング言語でバッチスクリプトを書けば、スクリプトそのものに日本語名を使うことになるので、例えば数年前に書いたバッチを見直した際にも、意味を思い出しやすくなります。

自分や日本人しか読む可能性がないスクリプトにわざわざ英語でコメントを書いたり、そもそも面倒くさがってコメントを省いて書いて、後で困ることを考えれば、はじめから「日本語名でバッチスクリプトを書いてみる」という選択肢もアリなのではないでしょうか。

  • いいね (0)
  • 続きを読みたい (0)

コメントを残す