I ♥ WordPress

ファイルがどのパッケージに含まれているかを確認するrpmコマンド
2007/09/09 00:08 posted by kunkichi

いっつも忘れてしまって、もう100回ぐらい調べてます、、、僕の記憶力、orz

# rpm -qf ファイル名

これでもう忘れない、と思いたい、、、

サーバの構築を簡単にするためのステップ (その6:Cobber編 Part2 )
2007/09/05 12:42 posted by kunkichi

ということで前回のエントリからまたもやえらく経ってしまったのだけど引き続き Cobbler の設定。

前回まででインストールと基本設定はできているので、いよいよここから実際のネットワークインストールサーバの運用に絡んだお話。逆に言うと前回の手順で行った1〜3の作業については(大幅な設定変更とかしない限り)もう意識する必要はなくなる。

(more…)

CentOS5 で Subversion+Trac
2007/08/27 21:24 posted by kunkichi

またもや前回のエントリから時間が経ってしまったのだけど、いろいろ検証しているうちにキックスタート設定ファイルやら構築手順やらのファイル管理が必要な気がしてきた。

のちのちはアプリ開発環境も構築していきたいということもあって、ちょっと脱線して、前からやってみたかった Subversion+Trac を CentOS5 に導入してみました。

ちなみに、前提条件はこんな感じ。

  • Subversion のレポジトリは /home/develop/svn 配下にプロジェクト毎にディレクトリを分けて作成。

    例)
        /home/develop/svn/project1
        /home/develop/svn/project2
        /home/develop/svn/project3

  • Trac のプロジェクト用ディレクトリは /home/develop/trac 配下にプロジェクト毎にディレクトリを分けて作成。

    例)
        /home/develop/trac/project1
        /home/develop/trac/project2
        /home/develop/trac/project3

  • Subversion へのアクセスは HTTP経由のみ。svn はセキュリティ的にありえないし、svn+ssh は複数で使う場合にパーミッションの問題が面倒な気がしたので。HTTP なら apache ユーザの権限つけとけば済むのでシンプル。
  • Subversion へのアクセス制限はBASIC認証。またコミット時はこれがコミットしたユーザとして登録される。HTTPS はある程度環境ができてから。
  • Trac へのアクセス制限は Subversion のアクセス制限設定と同じファイルを使う。
  • OS は CentOS5 を最小構成で入れた状態。
  • 【追記】2007/9/7:SELinuxとFirewallはOFF。

では手順。

・Subversion のインストール

CentOS5 では subversion を HTTP 経由 で使うのに必要なパッケージが全部揃っているので、yumで subversion、httpd、mod_dav_svn をインストールすればオーケー。コマンド的には↓で全部必要なものが入ります。
# yum install mod_dav_svn
subversion のレポジトリを作成。プロジェクト名は”test”とします。
# mkdir -p /home/develop/svn
# svnadmin create /home/develop/svn/test

トランク、タグ、ブランチ用のディレクトリを作成。
# svn mkdir file:///home/develop/svn/test/trunk file:///home/develop/svn/test/tags file:///home/develop/svn/test/branches -m "init repository layout (trunk,tags,branches)"
apacheからファイルの読み書きが出来るようにパーミッションを変更。
# chown -R apache.apache /home/develop/svn/test
BASIC認証の設定。
# htpasswd -c /home/develop/.htpasswd kunkichi
apache の設定変更。/etc/httpd/conf.d 以下に subversion.conf が出来ているのだけど、全てコメントアウトされているので、必要な箇所のコメントアウトを外して、リポジトリ、BASIC認証用パスワードファイルのパスを変更。
# vi /etc/httpd/conf.d/subversion.conf
最終的にはこんな感じ。
<Location /svn>
   DAV svn
   SVNParentPath /home/develop/svn
 
   # Limit write permission to list of valid users.
   <LimitExcept GET PROPFIND OPTIONS REPORT>
      # Require SSL connection for password protection.
      # SSLRequireSSL
 
      AuthType Basic
      AuthName "Authorization Realm"
      AuthUserFile /home/develop/.htpasswd
      Require valid-user
   </LimitExcept>
</Location>

最後にapacheを再起動+自動起動設定。
# service httpd start
# chkconfig httpd on

ブラウザで確認。トランク、タグ、ブランチ用のディレクトリを作成した時にリビジョンが上がっているので”Revision 1: /”と表示されればOK。

・Tracのインストール

続いて Trac のインストール。

こちらも yum でササッと行きたいところだけど、CentOS5 の標準リポジトリに Trac は含まれていない。あとTrac が依存しているライブラリも同様。でもサードパーティーのレポジトリである DAGレポジトリ(rpmforge) でちゃんとパッケージ化されているのでこれを使えばオーケー!

、、、なんだけど、DAG の Trac パッケージは日本語化がされていない。個人的には英語でもなんら困らないし、むしろサーバのパッケージ管理を考えるとこっちの方がベターなんだけど、初のTrac ということもあるので、今回は依存ライブラリを DAG から、Trac 本体はインタアクト株式会社のウェブサイトで提供されている日本語化されているものを使う。

DAGレポジトリの追加。
# wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
# rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.i386.rpm

DAGレポジトリは標準でOFF。必要なときのみONとする。DAGレポジトリの設定ファイルを開いて
# vi /etc/yum.repos.d/rpmforge.repo
・・・
enabled = 1
・・・
これを
・・・
enabled = 0
・・・

に変更。

Tracが依存しているライブラリをDAGからインストール
# yum --enablerepo=rpmforge install -y python-clearsilver
ついでにmod_pythonもインストールしておく。こっちは標準レポジトリから。
# yum install -y mod_python

日本語化Tracのインストール
# wget http://www.i-act.co.jp/project/products/downloads/trac-0.10.4-ja-1.zip
# unzip trac-0.10.4-ja-1.zip
# cd trac-0.10.4-ja-1
# python setup.py install

Tracプロジェクト用ディレクトリの作成
# mkdir /home/develop/trac
Tracプロジェクトの作成。こちらも subversion のプロジェクト名と同じように”test”とします。
# trac-admin /home/develop/trac/test initenv
trac-admin 〜 initenv するといろいろ聞かれるので以下のように回答していきます。

まずプロジェクト名。”test”と入力。
Project Name [My Project]> test
Tracのデータベース接続詞を設定。今回はお手軽に デフォルトのsqlite を使うのでそのままENTER。
Database connection string [sqlite:db/trac.db]>
レポジトリのタイプを指定。subversion がデフォルトなのでそのままENTER。
Repository type [svn]>
subversionのレポジトリパスを指定します。
Path to repository [/path/to/repos]> /home/develop/svn/test
Tracのテンプレートパスを指定。とりあえずデフォルトで。そのままENTER。
Templates directory [/usr/share/trac/templates]>

完了したら動作確認。Trac付属の簡易HTTPサーバを起動。
# tracd --port 8000 /home/develop/trac/test
ブラウザで http://サーバのIP:8000/プロジェクト名 にアクセスして画面が表示されればとりあえずOK。

Tracd で動作確認が出来たら Ctrl+C で止めて今度はapacheで動作するように設定。まずパーミッションを変更。
# chown -R apache:apache /home/develop/trac/test
次にtrac用のapache設定ファイルを作成。
# vi /etc/httpd/conf.d/trac.conf
内容はこんな感じ。
<Location /trac>
   SetHandler mod_python
   PythonDebug On
   PythonHandler trac.web.modpython_frontend
   PythonOption TracEnvParentDir /home/develop/trac
   PythonOption TracUriRoot /trac
</Location>
 
<LocationMatch "/trac/.*/login">
   AuthType Basic
   AuthName "trac"
   AuthUserFile "/home/develop/.htpasswd"
   Require valid-user
</LocationMatch>

設定が終わったらapacheを再起動して設定を反映。
# service httpd restart
ブラウザで http://サーバのIPアドレス/trac/test にアクセスして確認してみます。
Trac
こんな画面が表示されたらこれで一応完了です。

あと、やりたいこととして

  • HTTPSでのアクセス。
  • Subversion のコミットとTracのチケットの連携。
  • Subversion でコミットが行われたり、Trac でチケットが登録された時にメールで通知。

とかあるんだけどこれは後々。

【追記:2007/9/8】

このエントリを参照していただいたサイトで以下のエントリがありました。

■[CentOS]CentOS5でsubversionを入れる時に詰まったことのメモ

  CentOS5 で Subversion+Trac | cafe chantant blog

VMware Serverを導入したので、CentOS5を入れていろいろと試そうということで上記のページを参考にSubversionのインストールしました。

インストールを終えてブラウザから動作の確認をしたのですが、「Could not open the requested SVN filesystem」と表示され、うまくいっていませんでした。(public static void main

テスト環境だったのでSELinuxとかFirewallはOFFにしてたのですが記述してなかったので追記しました。

サーバの構築を簡単にするためのステップ (その5:Cobber編 Part1 )
2007/08/09 01:58 posted by kunkichi

ちょっと間が空いたけど前回の続き。

ステップ3とステップ4で、OSの自動インストールの仕組みについて説明した。それぞれの設定はそんなに難しくはないと思うんだけど、kickstart、dhcp、tftp、ファイルサーバと設定箇所が多岐にわたっていてかつ手動で設定するのは、ちょっと規模が大きくなると厳しい感じもする。

ということで上で一通りあげたツールを全部まとめて簡単にインストール・設定・管理ができる、Cobbler というツールがあることを知ったのでちょっと脱線するけど試してみる。

(more…)

サーバの構築を簡単にするためのステップ (その4)
2007/08/02 17:30 posted by kunkichi

前回の続き。

PXEブート対応のNICがないということで、完全な無人インストールはできないということだったのだけど、BIOSの設定を見直してみるとありました、、、調査不足、俺、orz

ということで早速設定変更してやってみました。

4. PXEブートで起動。全てのデータをネットワーク上に置く。

まず、PXEブートに対応しているNICがついていてBIOS設定で有効にしておくことが大前提。

まずインストール対象のサーバがインストールプログラムをネットワークから取得できるようにtftpサーバを立てる。
# yum install tftp-server
tftpサーバはxinetd越しに起動するのでxinetdも併せてインストールされると思います。ただしデフォでは無効になっているので、これを有効にする。
# chkconfig xinetd on
# chkconfig tftp on
修正後、xinetdのリスタートもお忘れなく。
# service xinetd restart

次にPXEブート用のブートイメージをCD/DVDからtftpで公開しているディレクトリにコピー。
# mkdir /tftpboot/linux-install
# cp -pi /export/nfs/iso/images/pxeboot/initrd.img /tftpboot/linux-install/.
# cp -pi /export/nfs/iso/images/pxeboot/vmlinuz /tftpboot/linux-install/.

次にPXEブート用のブートローダであるpxelinux.0をtftpで公開しているディレクトリにコピー。
# cp -pi /usr/lib/syslinux/pxelinux.0 /tftpboot/linux-install/.

PXEブート用の設定ファイルを作成する。pxelinux.0と同じ階層にpxelinux.cfg というディレクトリを作成し配下にdefaultという名前でファイルを作成する。
# mkdir /tftpboot/linux-install/pxelinux.cfg

中身はこんな感じで。
default centos5
prompt 0
 
label centos5
kernel vmlinuz
append ks=nfs:192.168.0.254:/export/nfs/ks/ load initrd=initrd.img devfs=nomount

で、最後にdhcpd.confの設定変更。これまではDHCPでIP取得と併せてキックスターと設定ファイルのパスを取得していたのだけど、PXEブートではIP取得と併せてまずブートローダを取得しないといけないので、DHCPではブートローダのファイル名を渡すようにする。そのかわり、PXEブート用設定ファイルの中でブートローダの引数にキックスタートファイルのパスを指定する、ということかな。
        filename "/export/nfs/ks/"; これを
        filename "/linux-install/pxelinux.0";に変更して、DHCPを再起動する。
# service dhcpd restartでサーバの電源をオン。

これで終了〜。ブートCD/DVDのメディアもいらないし、起動時のプロンプトも入力する必要なし、電源入れるだけで勝手にインストールが始まります。

ちなみにうちの余っていたDELLのデスクトップ(CPU: Pen3 1GHz、MEM: 512MB)で試してみた感じでは、トータル15分程度で完了。これはマシンスペックやネットワークの帯域、あとインストールするパッケージ数にもよると思うだけど、
最近のマシンはCPUもディスクも早いと思うのでもっと短くなるかもしれないね。

サーバの構築を簡単にするためのステップ (その3)
2007/08/02 08:00 posted by kunkichi

前のエントリの続き。

はてなと一般IT企業との乖離については前回で終わり。だってめんどくさいんだもん(爆)。まあどこの会社にもいろいろ政治的な問題があって難しいということを単に愚痴ってみただけです(笑)

今日はこれ。

まっさらなサーバを30分で本番投入できるようにする

サーバをバックエンドの本番に投入するまでには、おおまかに以下のことが必要です。

〜略〜

  • OSのインストール

〜略〜

はてなダイアリー - とあるはてな社員の日記

2. OSのインストール

はてなが現在メインで使っているのは確かCentOSが多いらしい。CentOS は Red Hat EL のクローンであり、自動インストールの仕組みは Red Hat 標準の仕組みである「キックスタート」がそのまま使える。

昔、Red Hat 7〜9 を仕事で使っていた頃は検証環境を作ったりするのにFDからキックスタートして環境作り直しとかよくやってたんだけど、ここ数年は 商用UNIXばっかりで Linux から離れていたので、ちょっと復習をかねて、キックスタートを使ったOSのインストール手法を整理してみる。ちなみにOSはCentOS5を使います。

  1. CD/DVDからインストール。キックスタートファイルはFDに置く。

    一番ベタなやり方。でもこれだけでインストール時の対話形式をスキップできる。

    昔は、インストールFDの中にキックスタート設定ファイル(ks.cfg)を入れてたのだけど、RHEL ではもうFDからの起動は出来なくて必ず CD/DVD から起動する必要があるらしい。ただし、キックスタートだけでFDを使うことはできる。

    とりあえず普通に1回インストールすると/root/anaconda-ks.cfgというファイルが作成される。これがインストール時の設定内容に基づいて作成されたキックスタート設定ファイルなんだけど、これをベースにしてカスタマイズしてみる。
    # Kickstart file automatically generated by anaconda.
     
    install
    cdrom
    lang ja_JP.UTF-8
    keyboard jp106
    network
      --device eth0 ¥
      --bootproto static ¥
      --ip 192.168.0.101 ¥
      --netmask 255.255.255.0 ¥
      --gateway 192.168.0.1 ¥
      --nameserver 192.168.0.1 ¥
      --hostname test.example.com
    rootpw --iscrypted *****************************
    firewall --disabled
    authconfig --enableshadow --enablemd5
    selinux --disabled
    timezone Asia/Tokyo
    bootloader --location=mbr --driveorder=hda
    # The following is the partition information you requested
    # Note that any partitions you deleted are not expressed
    # here so unless you clear all partitions first, this is
    # not guaranteed to work
    clearpart --linux --drives=hda
    part /boot --fstype ext3 --size=100 --asprimary
    part swap --size=1000
    part / --fstype ext3 --size=100 --grow
     
    %packages
    @base
    @core
    @development-libs
    @development-tools
    @japanese-support
    kernel-devel
    lm_sensors
    net-snmp-libs
    net-snmp
    ntp

    オリジナルのanaconda-ks.cfgからカスタマイズしたところは以下。

    • デフォだとファイアウォール と SELinux が有効になっているので disable。
    • デフォだとディスクのパーティション構成を設定する箇所がコメントアウトされてるのだけどこれを有効にする。ちなみに上のパーティション構成はテストなのでとても安易w。
    • 最後の方のインストールするパッケージグループ・パッケージ名にいくつか追加(lm_sensors、net-snmp-libs、net-snmp、ntp)。

    あと、便宜上ネットワーク設定の箇所はバックスラッシュ入れて複数行に分けてるけど、実際には1行で書く必要あり。バックスラッシュも使えません。

    でこのファイルを FD に ks.cfg というファイル名でコピーする。
    # mkdir /mnt/floppy
    # mount /dev/fd0 /mnt/floppy
    # cp -pi ks.cfg /mnt/floppy
    # umount /mnt/floppy
    これができたら準備完了。いよいよサーバのインストールを行う。

    CD/DVDで起動。インストーラ起動画面が表示されたら以下のように入力。
    boot: linux ks=floppyあとは終わるまでのんびりとコーヒーでも。

  2. CD/DVDからインストール。キックスタートファイルはネットワーク上に置く。

    1. でかなり時間は短縮できるようになったけど、今時FDってのもねー。FDDがないサーバも多いし。ということで、次はネットワーク上からキックスタート設定を拾ってくるようにする。ということで、必要なのは BOOTP/DHCP と NFS の設定。

    まず、適当なサーバにks.cfgを移動して NFS で公開。ここでは /export/nfs/ks を公開ディレクトリする。このときファイル名は”割り当てたいIPアドレス-kickstart”にしておくこと。例では192.168.0.101で割り当てます。
    # mkdir -p /export/nfs/ks
    # cp -pi /tmp/ks.cfg /export/nfs/ks/192.168.0.101-kickstart
    # vi /etc/exports
    ---–
    /export/nfs/ks *(ro,no_root_squash)
    ---–
    # service nfs start

    次にBOOTP/DHCPの設定。BOOTP は使ったことないので、DHCPでやります。
    yum で dhcp をインストールして、設定ファイルをちょこっと書き換え。
    # yum install dhcp
    # cp -pi  /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf
    # vi /etc/dhcpd.conf

    とりあえずこんな感じで書き換え。割り当て範囲は192.168.0.101だけにしてます。最後の方でNFSの公開ディレクトリとサーバのIPを設定してます。
    ddns-update-style interim;
    ignore client-updates;
     
    # 割り当てたいネットワークの範囲
    subnet 192.168.0.0 netmask 255.255.255.0 {
     
    # --- default gateway
            option routers                  192.168.0.1;
            option subnet-mask              255.255.255.0;
            option domain-name-servers      192.168.0.1;
     
            # 割り当てたいIPアドレスの範囲
            range dynamic-bootp 192.168.0.101;
            default-lease-time 86400;
            max-lease-time 172800;
     
            # NFSサーバでキックスタートファイルをおいているパス
            filename "/export/nfs/ks/";
            # NFSサーバのIPアドレス
            next-server 192.168.0.254;
    }

    ではDHCPを起動。
    # service dhcpd start

    ではCD/DVDで起動してインストールしてみる。インストーラ起動画面が表示されたら以下のように入力。
    boot: linux ksあとは終わるまでのんびりとお菓子でも。

    ちなみにちょっと注意として、dhcpd.conf でリースするIPをある範囲で指定する場合、つまり192.168.0.10〜100とかで指定する場合は、どれが割り当てられるかわからないので、キックスタートファイル名のIPが予測できない(上の例で割り当てられるIPを一つだけにしたのはそのため。)予め、NIC の MACアドレスを調べておいて、このMACにはこのIPを割り当てるとかした方がいいかも。

  3. CD/DVDで起動。キックスタートファイルとインストールデータはネットワーク上に置く。

    せっかくキックスタートはリモートでおけるようになったのだから、インストールするデータもネットワーク上においてしまおう。CentOS5はCDだと6枚組だし最小構成でも全部必要なので入れ替えるの面倒。DVDだと1枚で済むけどたくさんメディアを使うのはコスト的によろしくない。ということでインストーラをブートするだけCDを使うことにする。

    まずインストールするデータをネットワーク上におく。本家サイトからダウンロードしたインストールDVDのISOイメージを公開するディレクトリにマウント。その後NFSで公開。
    # mkdir /export/nfs/iso
    # mount -o loop /tmp/CentOS-5.0-i386-bin-DVD.iso /export/nfs/iso
    # vi /etc/exports
    ---–
    /export/nfs/ks *(ro,no_root_squash)
    /export/nfs/iso *(ro,no_root_squash)
    ---–
    # service nfs reload

    次にキックスタート設定ファイルの中身を書き換える。今の設定ファイルだとCDROMからインストールするようになっているのでこれをNFSを使うようにする。
    # vi /export/nfs/ks/192.168.0.101-kickstart
    ---–
    cdrom
    ---–

    となっている箇所を、
    -----
    nfs --server=192.168.0.254 --dir=/export/nfs/iso
    ---–

    に変更する。

    後はこれまでと同じく
    CD/DVDで起動してインストーラ起動画面で以下のように入力。
    boot: linux ksあとは終わるまでのんびりと昼寝でも。

てな感じで。まだ工夫の余地はたくさんあるんだけど、これだけでも結構効率が上がるはず。

ほんとは、PXEブートを使って、インストールCD/DVDもなし、完全な無人インストールをやりたかったのだけど、PXEブートに対応してるNICがないのでそれはまた今度。

printf/sprintf で 2進数で出力する
2007/07/24 11:33 posted by kunkichi

メモ。printf/sprintf の 型指定で b を使うと 2進数 で出力できる。Perl 5.6以降っぽい。
$ perl -e 'printf("%3d:%08b\n",$_,$_)for(0..255)'
  0:00000000
  1:00000001
・・・
254:11111110
255:11111111

Solaris8 標準の Perl は 5.003だから自分で書かないと無理かな。

参考:
↓まるまる載ってた。
2進10進数変換

yumで最も早いミラーサイトを探す
2007/07/13 23:52 posted by kunkichi

知らなんだのでメモ。

# yum install yum-fastestmirror

消費電力改善を追求するLinux開発者たち
2007/07/05 18:39 posted by kunkichi

CNET Japanにこんな記事が載っていました。

消費電力改善を追求するLinux開発者たち

Linuxの新バージョンに搭載されている「ティックレスカール」について、プログラマーたちは、同オープンソースOSの効率改善につながると期待している。これは、プロセッサの消費電力を節約することを目的とした技術だ。(CNET Japan

最近は、高処理性能なマルチコアCPUが大流行りですが、併せて低消費電力を宣伝してることも多いです。まあ個人のレベルでもノートPCのバッテリ駆動時間なんかで恩恵を受けるんだろうけど、個人的には、

また、一般的に24時間稼働するサーバでは、増加する一方の電気料金を節約できる。

というところがかなり恩恵を受ける、というか受けたいところ(笑)。

データセンターのラック収容効率ってのは、結局のところ、ラックサイズとか熱量とかではなくて、ラックの電源容量に対してサーバの消費電力が頭打ちになるパターンがほとんどだしね。

これまでの消費電力改善に対しては、ハードウェア側からのアプローチが(宣伝もあって)大きいと思うのだけど、今度はOS側からもこういうアプローチが行われることはとても素晴らしい。また、ソフトウェアという意味では、OSだけでなくその上に乗っかってるアプリケーションのレベルでもこういった対応は求められる訳で、消費電力改善を妨げるような挙動をするものを探すツールが併せて提供されるというのも素晴らしい。

データセンターでのラック収容に悩んでる人は多いと思うので、期待したいです。

dig の出力に色をつける dig-color(perl版)
2007/07/04 02:09 posted by kunkichi

せっかく『あわせて読みたい』の画像をはっつけたので、どんなサイトが「あわせて」読まれてるのかな?ということで、リンクをたどってみたら、こういうのを見つけました。

cl.pocari.org - dig の出力に色をつける dig-color

dig の出力に色をつける dig-color というのを作ってみました.
リソースレコードタイプは A/NS/CNAME/SOA/MX のみにしか対応していませんので,そのほかのタイプが必要であれば追加してください.

こちらはRubyで書かれているようで、Rubyが入ってない環境は結構あるかなと思ったので、Perlで書き換えてみました。

#!/usr/bin/perl -w
 
use strict;
use warnings;
 
my %colors = (
    "section" => "02;01",
    "comment" => "37",
    "normal"  => "00",
    "A"       => "32",
    "NS"      => "34",
    "CNAME"   => "36",
    "SOA"     => "33",
    "MX"      => "31",
);
 
my @return = readpipe( "dig " . join( " ", @ARGV ));
foreach my $line ( @return ){
    my $color = $colors{"normal"};
    if( $line =~ /^;;.+SECTION:$/ ){
        $color = $colors{"section"};
    }elsif( $line =~ /^;/ ){
        $color = $colors{"comment"};
    }elsif( $line =~ /^(.+\s)(SOA|NS|A|MX|CNAME)(\s.+)$/ ){
        $color = $colors{"$2"};
        # レコードタイプのみに色を付ける場合
        #$line = sprintf "%s\e[%sm%s\e[00m%s\n", $1, $colors{"$2"} ,$2, $3;
    }
    printf "\e[%sm%s\e[00m", $color, $line;
}

ま、単にPerlの書き方に変えただけなんだけど。変数とか配列とかの書き方とか、あとpopen使ったことないのでreadpipeに置き換えただけみたいな、本当にその程度。

むしろ、出力に色を付けるのは詳しく知らなかったので、その辺はいじらないでそのまま動かしたら、サラッと動いちゃったので本人がびっくり、みたいな(爆)

結果はこんな感じ。

dig の出力に色をつける dig-color(perl版)

色がつくだけで何気に見やすくなるんですね。オリジナルの作者の方のアイデアに感謝。

このページの先頭へ