2012年9月16日日曜日

[SNMP] トラップの受信設定

先日SNMPを設定したが、どうせなのでtrapdも設定してみる。 trapdはTRAP(ようは障害通報)を受信する機能。 「XXXな通報が来たら◯◯◯する」みたいな設定をするらしい。

trapの受信設定

設定の修正と再読み込み

snmptrapd.conf の修正

場所は「/etc/snmp/snmptrapd.conf」。
まずは全体的な設定

「doNotRetainNotificationLogs」はyesにすると「送信失敗時に再送信しない」?
「doNotLogTraps」はnoにすると「ログを出力しない」?
「doNotFork」はnoにすると「Forkしない」

次に受信元、「authCommunity TYPES COMMUNITY [SOURCE [OID | -v VIEW ]]」みたいに書けばいいらしい、今回はlogとexecuteとnetをpublicコミュニティから受信する。
「disableAuthorization」がnoなので「認証あり」


いよいよsyslogに出力する設定。
文法はこれ
traphandle トラップOID 受信時に実行するコマンド 引数
というわけで「すべてのTrap」を「syslogに出力」するには以下
traphandle default /usr/bin/logger


すべて合わせると以下のようになるっぽい
#### When Recieve Trap
#default : write to syslog
traphandle default /usr/bin/logger

#### Settings
doNotRetainNotificationLogs yes
doNotLogTraps no
doNotFork no
pidFile /var/run/snmptrapd.pid

# authCommunity   TYPES COMMUNITY   [SOURCE [OID | -v VIEW ]]
#authCommunity     log   "community" 192.168.1.0/24
authCommunity     log,execute,net   public
disableAuthorization no

設定の再読み込み

snmptrapdの設定を再読み込み
%sudo service snmptrapd reload

Trapの送信方法

トラップを送信するコマンドには「snmptrap」を使ってみる。 こいつがめんどくさくて、SNMPv1のときとSNMPv2cのとき、SNMPv3の時で使い方が違う・・・

SNMPv1の場合

以下はv1の時。
snmptrap -v 1 共通オプション エンタープライズOID 送信元ホスト名 一般トラップ番号 固有トラップ番号 時刻 [パラメータのOID 型 値]...
例えばこんな風になる。
 snmptrap -v 1 -c public 127.0.0.1 .1.3.6.1.4.1.8072.99999 127.0.0.1 6 1 '' .1.3.6.1.4.1.8072.99999.1 s "Test Message"
意味
共通オプション-c public 127.0.0.1コミュニティはpublic、送信先は127.0.0.1
エンタープライズOID.1.3.6.1.4.1.8072.99999net-SNMPのトラップ
送信元ホスト名127.0.0.1
一般トラップ番号6net-SNMP独自の電文なので、「ベンダ固有」
固有トラップ番号1トラップの番号
時刻''現在時刻
パラメータのOID.1.3.6.1.4.1.8072.99999.1トラップ
s型、今回はString
"TestMessage"内容

SNMPv2cやSNMPv3の場合

以下はv2cの時。
snmptrap -v 2c 共通オプション 時刻 トラップOID [OID 型 値]...
例えばこんな風になる。
snmptrap -v 2c -c public localhost '' .1.3.6.1.4.1.8072.99999 .1.3.6.1.4.1.8072.99999.1 s "Test Message"
意味
共通オプション-c public 127.0.0.1コミュニティはpublic、送信先は127.0.0.1
エンタープライズOID.1.3.6.1.4.1.8072.99999net-SNMPのトラップ
送信元ホスト名127.0.0.1
時刻''現在時刻
トラップのOID.1.3.6.1.4.1.8072.99999トラップ
パラメータのOID.1.3.6.1.4.1.8072.99999.1トラップ
s型、今回はString
"TestMessage"内容

送信してみる

というわけで、ためしに送信してみる。
% logger "==== This is SNMP Traptesting...===="
% sudo snmptrap -v 2c -c public localhost '' .1.3.6.1.4.1.8072.99999 .1.3.6.1.4.1.8072.99999.1 s "Test Message"
% sudo tail /var/log/messages
(前略)
Sep 16 15:14:33 myhost yosilove: ==== This is SNMP Traptesting...====
Sep 16 15:14:52 myhost snmptrapd[30522]: 2012-09-16 15:14:52 localhost [UDP: [127.0.0.1]:39309->[127.0.0.1]]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (597278044) 69 days, 3:06:20.44#011SNMPv2-MIB::snmpTrapOID.0 = OID: NET-SNMP-MIB::netSnmp.99999#011NET-SNMP-MIB::netSnmp.99999.1 = STRING: "Test Message"
Sep 16 15:14:52 myhost logger: localhost
Sep 16 15:14:52 myhost logger: UDP: [127.0.0.1]:39309->[127.0.0.1]
Sep 16 15:14:52 myhost logger: DISMAN-EVENT-MIB::sysUpTimeInstance 69:3:06:20.44
Sep 16 15:14:52 myhost logger: SNMPv2-MIB::snmpTrapOID.0 NET-SNMP-MIB::netSnmp.99999
Sep 16 15:14:52 myhost logger: NET-SNMP-MIB::netSnmp.99999.1 "Test Message"
どうやらできたらしい。

2012年9月8日土曜日

Mac上のWineでRPGツクールのゲームを動作させてみる

友人がRPGツクール VXを使ってHANDというゲームを作ったらしい。
そこで早速試してみようと思ったものの・・・俺ってばWindows機持ってない!

というわけでMacやLinuxでWindowsのソフトを動作させるためのWineというソフトを使って、どうにかプレイしてみようと頑張ったメモ。

前提知識

HAND

友人のしげまろさんとその友達のUuGAさんが作成したフリーホラーゲーム、RPGツクールVXで作成されているらしい。
RPGツクールVXで作成されたソフトを実行するためのRPGツクールVX RTPの上で動作する。

RPGツクールVX RTP

RPGツクールVXで作成されたソフトウェアを動かすために必要なもの、JavaでいうVM的なあれ?
利用者はたくさんいて、相当数のフリーソフトもあるが、いかんせんWindows専用ソフトなのでMacでは動かない。

実行するには「Windows機を用意する」「MacでBootCampやParallels Desktopなどを使ってWindowsを動かす」などの方法があるが、今回は無料でできる「MacでWindowsのソフトが動くようにする」を頑張ってみた。

wine

Linuxの上でWindowsのソフトウェアを実行できることを目指して開発が続けられているプログラム群。Macにも移植されており、WineBottlerなどが有名。

ただし、やっぱそう簡単にはいかないのでいろいろと頑張らないといけない。

準備するもの

  • WineBottler 1.2.3
  •  最新版は1.4.2だが、音がならないという不具合があるらしい。
  • IPA モナーフォント
  •  日本語フォントならなんでもいいが、先達にしたがってこれで。
  • RPGツクールVX RTP
  • RPGツクールVX用のVM的なもの、VX Aceと間違えないように注意。
  • RGSSAD_WX
  • RPGツクールで使われる「.rgss2a」ファイルを解凍するためのソフト
  • HAND
  • 現状の最新版は0.5(体験版)

インストール作業

1:WineBottlerをインストールして、Prefixを作る

2:日本語フォントをインストール

WineBottllerはデフォルトだと日本語フォントが入っておらず、みごとに文字化けする。
なのでとりあえずIPAモナーフォントをインストールする。
  1. Winetricksを使ってcorefontsをインストールし、wineを再起動する
  2. IPAモナーフォントのttfファイルを「drive_c/windows/Fonts」内に置く
  3. 以下の内容で拡張子がregなファイルを作成する(文字コードはShift-JIS、改行コードはLF)
  4. [HKEY_CURRENT_USER¥Software¥Wine¥Fonts¥Replacements]
    "MS Gothic"="IPA モナー ゴシック"
    "MS Mincho"="IPA モナー 明朝"
    "MS PGothic"="IPA モナー Pゴシック"
    "MS PMincho"="IPA モナー P明朝"
    "MS UI Gothic"="IPA モナー UIゴシック"
    "MS ゴシック"="IPA モナー ゴシック"
    "MS 明朝"="IPA モナー 明朝"
    "MS Pゴシック"="IPA モナー Pゴシック"
    "MS P明朝"="IPA モナー P明朝"
    
    [HKEY_LOCAL_MACHINE¥Software¥Microsoft¥Windows NT¥CurrentVersion¥FontLink¥SystemLink]
    "Lucida Sans Unicode"=hex(7):69,70,61,67,75,69,2d,6d,6f,6e,61,2e,74,74,66,2c,¥
    49,50,41,20,83,82,83,69,81,5b,20,55,49,83,53,83,56,83,62,83,4e,00,00
    "Microsoft Sans Serif"=hex(7):69,70,61,67,75,69,2d,6d,6f,6e,61,2e,74,74,66,2c,¥
    49,50,41,20,83,82,83,69,81,5b,20,55,49,83,53,83,56,83,62,83,4e,00,00
    "Tahoma"=hex(7):69,70,61,67,75,69,2d,6d,6f,6e,61,2e,74,74,66,2c,¥
    49,50,41,20,83,82,83,69,81,5b,20,55,49,83,53,83,56,83,62,83,4e,00,00
    
  5. WineのRegistory Editorで、[レジストリ]→[レジストリのインポート]する

3:オーディオの設定

デフォルトだと音がならないので、オーディオの設定をする。
ここまで終わると東方シリーズ等大抵のソフトは動く。
  1. plugplayが使えるように、system.regを編集する
  2. 変更前
    [System¥¥CurrentControlSet¥¥Services¥¥PlugPlay] 1347102571
    "Description"="Enables automatic configuration of devices"
    "DisplayName"="Plug and Play Service"
    "ErrorControl"=dword:00000001
    "ImagePath"="C:¥¥windows¥¥system32¥¥plugplay.exe"
    "ObjectName"="LocalSystem"
    "PreshutdownTimeout"=dword:0002bf20
    "Start"=dword:00000002
    "Type"=dword:00000020
    
    変更後
    [System¥¥CurrentControlSet¥¥Services¥¥PlugPlay] 1347102571
    "Description"="Enables automatic configuration of devices"
    "DisplayName"="Plug and Play Service"
    "ErrorControl"=dword:00000001
    "ImagePath"="C:¥windows¥system32¥plugplay.exe"
    "ObjectName"="LocalSystem"
    "PreshutdownTimeout"=dword:0002bf20
    "Start"=dword:00000002
    "Type"=dword:00000020
    
  3. WineのWinetricksを使って「directx9」「dsound」「dmsynth」「sound=coreaudio」を入れる
  4. 以下の内容で拡張子がregなファイルを作成する(文字コードはShift-JIS、改行コードはLF)
  5. [Software¥Wine¥DirectSound]
    "HardwareAcceleration"="Emulation"
    
  6. WineのRegistory Editorで、[レジストリ]→[レジストリのインポート]する
  7. Wineを再起動すると、後述のオーディオ設定で使う項目が表示される(デフォルトだと下記の項目は存在しない)
  8. WineのConfigurationで[オーディオ]の[ドライバを選択]のところを、「CoreAudioドライバ」を選択する
  9. WineのConfigurationで[オーディオ]の[DirectSound]の[ハードウェアアクセラレーション]ところを、「エミュレーション」を選択する
  10. WineのConfigurationで[オーディオ]の[音をテスト]ボタンを押下し、音が出ればOK

4:MIDIファイルが鳴るように設定(オプション)

HANDでは使っていないぽい(?)が gm.dls を「drive_c/windows/system32/drivers」に配置するとMIDI音源も再生できるようになるらしい。

5:RPGツクールVX RTPのインストール

ふつうにインストールできる。

6:HANDのインストール

HANDをダウンロードしてインストールする。
何もせずに実行するとアーカイブが読み込めないとか何とかでエラーになるけど、 この「アーカイブ」とやらはHANDのディレクトリにある「Game.rgss2a」のことらしい。
そこでVC++6のランタイム(vcrun6)をインストールし、RGSSAD_WXというソフトを使ってこのファイルを解凍する。
  1. 「Game.rgss2a」のファイル名を「Game.rgssda」に変更する
  2. WineのWinetricksを使って「vcrun6」をインストールし、wineを再起動する
  3. RGSSAD_WXを使って「Game.rgssda」を解凍、できたファイルは「Game.rgssda」と同じディレクトリに置く
  4. 「Game.rgssda」を削除もしくはリネームする

動かしてみる

以下のようにちゃんと動いた、BGMもきちんと鳴っている。

Share photos on twitter with Twitpic
Share photos on twitter with Twitpic

感想

まず、デフォルトで音が鳴らないのってどうなの?
次に、デフォルトで入るファイルがレジストリ編集しないと読めないってどうゆうこと?
最後に、てゆうか最新版になると上記の設定しても音が出ないってなんでだよww

以上、wineへの愚痴でした。

参考サイト