Webalizerぁぁ...2009/07/14 16:14

とある Web サーバでアクセスログの解析をやりたいのでログ解析パッケージの Webalizer をインストールして欲しいという依頼を受けた。

このサーバ、何年も前に他所の業者さんが設置したもの。あらためて環境を確認すると Redhat Linux 7.3。ftp.kddlabs.co.jp を探してみたら、このディストリビューションのタイムスタンプ、02/06/14。確かにこの頃ずいぶん Linux でシステムを設置する仕事をやったけれどもう7年前ですか... と感傷に浸る間もなく、該当するパッケージがないか探したら webalizer-2.01_10-1.i386.rpm というのがあったのでダウンロードし、rpm でインストールしようとしたら、/var に空きがなくて rpm が実行できない(;_;)
確認したら、/var の割り当てが たったの251MB。しかも /var/spool/mail/root がまんま 251MB。このサーバ良く落ちませんでしたねという状態。とりあえずスプールにたまった root をごそっとどかして場所を空けてあらためて rpm を実行したところ

エラー: 依存性の欠如:
webserverは webalizer-2.01_10-1 に必要とされています
だって。でもこのサーバ apache 走ってるじゃん。

てことはソースからインストールした奴が走ってるのかなと確認したら、/usr/local/apache/の下にいらっしゃいました。それじゃってんで Webalizer のオフィシャルサイトを探して、ソースをダウンロード。

とりあえず動作させることを優先してコンパイルオプションは

  • --with-language=japanese で日本語出力
  • --enable-dns で逆引きを行う

    だけで ./configure、make、make install
    すんなり入ってくれました。

    続いて /etc/webalizer.conf の内容を実際の環境に合わせて修正
    LogFile には実際のログが保存されているファイルをフルパスで記述
    LogType clf は、httpの挙動だけ知りたいのでそのまま
    OutputDir にはブラウザでアクセスするための URL。
    今回はドキュメントルートの下にそれ用のディレクトリを作成して指定
    Incremental は yes として、過去の結果を残すようにした
    HostName は実際のサイトの名称を記述
    あとの項目はデフォルトのまま。

    解析結果を表示する URL が誰でもアクセスOKなのはなんなので、このディレクトリにベーシック認証をかけた後、毎朝解析結果を更新するようにWebalizerをキックするスクリプトを書いてcrontabに登録、でとりあえず一件終了。あとの細かい設定に関するオーダーを待つばかりに漕ぎ着けた。

  • Netscreen Remote と Vista、セキュリティソフトの相性2009/07/10 17:35

    今日、Netscreen Remote r9.4 をとある VAIO にインストールすることになった。OSは Windows Vista Business(だったよな。ドメインログオンできてAeroが使えてたから)。

    Vista にインストールする場合、普通の手順でインストーラを走らせるとまれにセキュリティポリシーに関する情報を間違った位置にレジストリを書き込むことがあって、その場合、正常に動作しているXPからキーをエクスポートして、Vista側にインポートしてやればいいことは知っていた。(http://www.juniperforum.com/index.php?topic=7946.0

    ところがそもそも作成済みのセキュリティポリシーファイルをインポートしようとするとソフトウェアがフリーズしてしまう orz

    とりあえず手順を変えて、XPからエクスポート済みのキーをインポートして再起動。今度はOSの起動中にブルースクリーン ORZ
    しかたがないのでセーフモードで起動して、Netscreen Remoteのインストール直前の状態にシステムを復元。次の予定があったので時間切れで調査後再チャレンジと言うことにさせてもらった。

    その後あちこち検索して情報を探し回ったところ、どうやらウィルスバスターがインストールされている場合、ネットワークアダプタにバインドされているTrend Micro NDIS 6.0 Filter Driverというドライバと競合してシステムが落ちてしまうと言うことがわかった。(http://ameblo.jp/valiants/entry-10195652786.html

    最近の ThinkPad の場合も、Lenovoがプリインストールしているネットワーク廻りのセキュリティソフトとぶつかって正常に動作しないので、その場合はアンインストールしてから使ってくれという話もある。(http://jscom.jp/support/products/juniper/ns-remote/kb/00007

    念のためにメールでウィルスバスターが入ってましたっけ?と確認すると入れてあるのは McAfee Security Center という返事。上に記した問題と似たような現象なのかどうかの検証から次回は始まることとなった。

    頭の痛い話である。

    OS Xで /etc/hosts を有効にする2009/07/01 14:37

    先日書いたスクリプトの件で、追記。
    特定のホスト名に関する名前解決をローカルで行わせるために、/etc/hosts にレコードを追加するようにスクリプトに書いたのだが、名前を解決してくれない。
    /etc/hosts は存在しても
    # Host Database
    #
    # localhost is used to configure the loopback interface
    # when the system is booting. Do not change this entry.
    ##
    と書いてあって、標準では起動時にループバックを認識させるためにしか使わないとあった。
    ググってみたら追加で登録したレコードは Netinfo に登録しないといけないという記述が何点か見つかった。ところがこいつは 10.5 Leopard で Netinfo は廃止され Open Directory で管理されるようになったため、この手は使えない。

    Apple のサポートに電話して聞いてみたが、これがまたいけない。出てきた担当者は即答できず折り返し電話をするという。ところが何回説明しても、尋ねられている質問の内容が理解できないらしい。いいかげん堪忍袋の緒が切れて、「あなた TCP/IP ネットワークのこと全然知らないんでしょ?わからないんだったらわかる人に繋いでくださいよっ!」と怒鳴りつけてしまった。

    しばらくして替わりの担当者から電話があり、どうやらディレクトリユーティリティにその機能が備わっているということがわかった。ところがこれまた、サポートの範囲外なので手順は教えられないと言う。???そーいうものなんでしょうか....

    ともあれどうやら設定は可能らしいのでディレクトリユーティリティを起動してみたところ、サービスをクリックすると利用可能なサービスの一覧(Local、LDAPv3、BSDフラットファイル、Active Directory)が表示されている。このうちチェックが入ってデフォルトで利用可能なのは、Local と LDAPv3。

    BSDフラットファイルにチェックを入れて鉛筆マークをクリックすると「BSDローカルノードのユーザおよびグループレコードを使う」にチェックボックスがあった。ヘルプで調べてみると、/etc 以下の各種設定ファイルを読み込ませるにはここをチェックすればいいとわかった。

    「さて、これで大丈夫」とひと安心して試してみるがまだ駄目。あらためてヘルプを読み直したり、ググり直したりしたがめぼしい発見はない。/etc の下を眺めること15分。「???」/etc/host.conf がないでやんの Orz こいつがないから hosts を参照してくれないのだった。別にデフォルトで無視するんだったら残しておいてくれてもいいような気がするんですがねぇアップルさん。

    sudo の挙動2009/06/25 13:38

    先日のスクリプトの続きでまたおもしろい経験をした。

    OS Xでは通常 root アカウントが無効にされているため、ターミナル内の CUI で管理権限が必要な操作を行う場合、コマンドの頭に sudo をつけて実行する必要がある。

    /etc/hosts ファイルにレコードを追加する必要がでてきたので、この間 Automator で sudo route add のスクリプトをアプリケーション化したのと同じように、

    sudo echo 192.168.111.xxx foo.bar.com >> /etc/hosts

    といった内容を作ってみたところ、動作確認でエラーが出てしまう。

    同じ一文を実際にコマンドラインで実行してみたら、/etc/hosts に対するパーミッションエラーでアクセス拒否されてしまうことがわかった。

    これは sudo で管理権限が与えられているのが echo コマンドだけで、次のリダイレクションによる /etc/hosts に対する文字列書き込み動作にはその影響が及ばないからだろうと思い、Automator を離れて、単純にsudo 抜きのコマンドだけを記述したシェルスクリプト script.sh を書いて

    sudo ./script.sh

    とコマンドラインから実行してみたら、みごとに通った。

    「そんなことは常識」と言われてしまう程度のことかもしれないが、まぁひとつお利口になりました。

    OS Xでシェルスクリプトの起動項目化成功!2009/06/19 17:34

    ついさっきのエントリ(OS Xでシェルスクリプトをアプリケーション化する)では経路情報の追加を起動時に自動で実行させる試みに頓挫して、アプリケーション化でお茶を濁したと書いたが、どうにも煮え切らない思いだったのであらためてヒントになる情報がないかググって探してみたところ、Mac OS Xの起動の仕組みという名古屋大学の内藤さんという方がOS XBetaの頃に書かれたページが引っかかった。

    ここに書かれていた内容を参考にしてあらためてStartupParameters.plistの中身をXMLではない古いスタイルで書き直してみたところ、書式エラーは出なくなった。

    しかしそれでもスクリプトの実行自体は fail してしまう。

    もう一度あらためてスクリプトを眺めること5分。なんのことはない、1行目の冒頭 #!/bin/sh で始めなければならないのに、#が抜けてる orz .... しかし、きちんと#を補って SystemStarter start してみたところ無事経路の追加に成功。

    さっきのエントリでは10.4の頃から変更になったと書いたけれど、2001年のBeta時代からしっかりと移行は始まっていたんですね。まぁこれでひと安心です。ありがとうございました内藤先生 m0m