Skip to content

Windows

MiniWeb 1.0.0.1 〜 再アクセス用のリンクを追加等、微修正

以前に、負荷試験時の利用を想定した簡易 Web サーバを作成しました。

これを若干、アップデートしました。

  • MiniWeb-1.0.0.1

  • コンテンツをテーブルで表示するようにした

  • アクセスされた URL が分かるように、URL 表示を追加した
  • 同じページに再アクセス出来るリンクを付けた(「iRule で特定のコンテンツ(拡張子)へのアクセス時のみ、制御を実施する」といった試験を実施しやすくする為)
  • アクセスされた時間表示に、ミリ秒を追加した

file

ひとつの NIC に大量のアドレスを割り当てるツール「Addresses」

Windows でも Linux でも、ひとつの NIC に複数の IP アドレス(俗に「セカンダリアドレス」と呼んでいると思います。三つ目、四つ目のアドレスでも「セカンダリアドレス」と呼んでいます)を割り当てることが出来ます。

この機能を利用すると、ロードバランサーでの負荷分散試験時に複数の IP アドレスで Web サーバをホストしたい・・・ということが簡単に出来ます(NIC に複数のアドレスを割り当て、それらのアドレスで Web サーバを Listen するだけです)。

ただ、Linux はともかく、Windows の GUI でセカンダリアドレスを大量に設定する・・・というのは骨が折れます。 WMI を使えば Windows でもスクリプトから大量のセカンダリアドレスを設定することは出来ますが、毎回、設定するのは面倒です。そこで、CSV ファイルに書き出したアドレスを NIC に設定してくれるツールを作ってみました。.NET Framework 2.0 で動作します。

負荷分散試験時などに利用する簡易 Web サーバ

ロードバランサー構築の際にロードバランシング(負荷分散)の試験をする際など、すぐに立ち上げられる Web サーバがあると重宝します。私の場合は自分用に簡易的なサーバを作り、利用しています。自分利用ですので、エラー処理などはまともに作っていません(ソケットを待ち受けている部分はスレッド化していますが、スレッドの終了処理などは適当に書いていますので、かなり怪しいです...)が、自分用にアップロードしておきます。.NET Framework 2.0 を対象にしています。

起動すると、このような画面になります。

file

「アドレス」「ポート」「背景色」を指定し、左上にある開始ボタンをクリックすることで Web サーバが起動します。Web サーバがリスンしているアドレスに対して Web ブラウザからアクセスすると、サーバ側のログをそのまま、ブラウザへ返してきます。以下ではローカルホストへ接続試験を実施したので、送信元・宛先が同じアドレスになっています。

file

ロードバランシングの試験を行うには、1 台の PC に複数のセカンダリアドレスを割り当て、それぞれのアドレスに対して MiniWeb サーバを異なる色でリスンさせ、ブラウザからアクセスして試験をしています。

セキュリティログを監視し、ファイルシステムへのアクセスをモニタする

Windows では .NET Framework の FileSystemWatcher クラス を使うとファイルシステムの変更をモニタすることが出来ます。しかし、FileSystemWatcher クラスでは「ファイルやフォルダを操作したユーザが分からない」という、大きな欠点があるようです。

そこで、代替手段として Windows のセキュリティ監査の新機能 などに記載のある「オブジェクトアクセスの監査」機能を使い、記録されたセキュリティログをモニタし、ファイルシステムへの操作を監視することが出来ます(この方法であれば、ファイルやフォルダを操作したユーザを取得することが可能です。スマートとは言えませんが...)。イベントログは EventLog クラスEventWritten イベント によってモニタすることが出来ます。ただし、Vista / 2003 以前と Windows 7 / 2008 ではオブジェクトアクセス時に発生するイベントの ID が以下のように異なるようで、やや注意が必要です。

TeraTerm に Log と Macro のショートカットを追加する

TeraTerm には様々な機能がありますが、その中には「Log」(ログを取得する機能)や Macro(マクロを実行する機能)があります。少なくても私の場合はログ機能は頻繁に使うのですが、ショートカットキーが設定されていない為、ログ機能のダイアログを呼び出すのは、やや面倒です。そこで TeraTerm のソースコードをほんの少しだけ修正し、ショートカットキーを設定してみました。ベースにしたのは TeraTerm 4.68(SVN# 4205)です。

Office 2010 のインストールには MSXML 6.0 が必要

Windows Server 2003 へ Microsoft Office 2010 をインストールしようとしたのですが、「MSXML がインストールされていない」というエラーが出てしまいました。MSXML 6.0 をインストールしました。しかし、それでもエラーが出てしまった為、MSXML 6.0 SP1 も追加インストールすることで無事、Office 2010 をインストールすることが出来ました。

Mac アドレスをコピーしたらベンダー名を表示する

以前にクリップボードの内容が変更されたら通知するツールを作りました。

しかし、.NET Framework には Clipboard を表現するクラス はあるものの、クリップボードの変更を通知するイベントが無い為、上述のツールでは「一定間隔でクリップボードの内容を取得し、前回の取得時と差分が無いか確認することで変更を検知する」という些かイケていない方法で実装していました。しかし、@IT で Win32 API の SetClipboardViewer を使ったサンプル記事「.NET TIPS - クリップボードの内容をリアルタイムに取得するには?」が公開されていたので、Win32 API を使ってツールをつくり直してみました。ただ、これだけではアレなので、クリップボードにコピーされたテキストが Mac アドレスだった場合はベンダー名を表示するように実装してみました。動作には .NET Framework 4.0 が必要です。

「xx.xx.xx.xx.xx.xx」(ピリオド区切り)や「yy:yy:yy:yy:yy:yy」(コロン区切り)、「zz-zz-zz-zz-zz-zz」(ハイフン区切り)といった形式の Mac アドレスをクリップボードにコピーすると、以下のようにベンダー名を表示します。

file