2011/05/10

サーバ管理に役立つ(かもしれない)FIGletというツール

FIGletは↓の様な文字を大きくするツールで、言わば文字専用のアスキーアートを出力するプログラムです。同じような目的のプログラムとしてはbannerコマンド(MacOS Xなら/usr/bin/banner)がありますが、figletコマンド方がより柔軟に多彩な文字を表示できます。


僕はサーバ管理の補助的なツールとしてこのFIGletを使っていますが、どんな感じで役立つのか書いてみます。

FIGletの用途

FIGletの作る大きな文字は視覚的に認識しやすく、サーバの設定ファイルなどで特に重要な部分をFIGletで作った文字で表題を書いておけば、流れるようにスクロールしていてもどの部分であるかの認識が容易になります。

/etc/motdで使う

/etc/motdは``message(s) of the day''の略語で、ログインした直後にこのファイルの内容がターミナルに表示されます。たくさんのサーバを管理している場合、サーバのホスト名をFIGletで作成し、それを/etc/motdに書いておけば、ログインした直後に間違ったサーバにログインしていないかどうかの確認にもなります。


僕の管理しているサーバの一つに``nijo''というホスト名のサーバがあります。ホスト名は京都市内の通りの名前を付けていて、ほかにはsanjo, muromachi, marutamachi, 6kakuなどがあります。上記はnijoの/etc/motdの例示用の内容で、FIGletで作ったホスト名と、そのホストの役割などを簡単に書いています。

ログインする度にこれが表示されるので、うっかり別のサーバで作業してしまうというミスを防ぐのに役立っています。

設定ファイルで使う

httpd.confやnamed.confなど、比較的長い設定ファイルでもFIGletは役に立ちます。httpd.confで沢山のVirtualHostを定義しているなら、VirtualHostディレクティブの直前にFIGletで作ったホスト名を書いておく、named.confにたくさんのゾーンを定義しているなら、プライマリの始まり辺りにはMASTERと、セカンダリの始まり辺りにはSLAVEと書いておいてもよいでしょう。

エディタで検索するしInclude使ってるからFIGlet要らないって人は、Includeされるファイルの先頭に、何を定義しているファイルか大きく書いておくとよいかもしれない気がします。

# figlet 'www.example.jp' | sed 's|^|# |g' ⏎ ← httpd.conf用に#でコメント化
# figlet 'example.org' | sed 's|^|// |g' ⏎ ← named.conf用に//でコメント化

ほかの用途

サーバの設定ファイルやソースコード以外では、サイトを運営している人であればお知らせ系のメールで目立たせたる、メモなどのテキストファイルで表題や項目名を目立たせると言った用途でもいいかもしれません。ただし日本語は通らないので、アルファベットや数字、記号に限られます。

FIGletを入れてみる

コンパイルしてインストールする

僕はいつも作業に使ってるMacにFIGletをコンパイルしてインストールしています。パッケージ版は、OpenBSDのportsとUbuntu 10.10のパッケージにはfigletが入っていましたが、CentOSにはありませんでした。FIGletは小粒なツールなのでソースをダウンロードしてすぐにコンパイルが終わります。


% cd /usr/local/src ⏎
% lftp ftp://ftp.figlet.org/pub/figlet/program/unix/ ⏎
cd ok, cwd=/pub/figlet/program/unix                                 
lftp ftp.figlet.org:/pub/figlet/program/unix> get figlet-2.2.4.tar.gz ⏎
229245 bytes transferred in 2 seconds (103.5K/s)           
lftp ftp.figlet.org:/pub/figlet/program/unix> bye ⏎
% gunzip -dc figlet-2.2.4.tar.gz | tar vfx - ⏎
...
% cd ./figlet-2.2.4/ ⏎
% make && sudo make install ⏎
mkdir -p /usr/local/bin
mkdir -p /usr/local/man/man6
mkdir -p /usr/local/share/figlet
cp figlet chkfont figlist showfigfonts /usr/local/bin
cp figlet.6 chkfont.6 figlist.6 showfigfonts.6 /usr/local/man/man6
cp fonts/*.flf /usr/local/share/figlet
cp fonts/*.flc /usr/local/share/figlet
% rehash ⏎ ←Bourne Shell系の人はhash -r

コンパイルしてインストールすると/usr/local/bin/figletとしてFIGletが使えるようになります。/opt/local/binなどほかのディレクトリにインストールしたい場合はMakefileを編集するとよいでしょう。

フォントを追加する

FIGletには専用のフォントがたくさんあります。ソースからコンパイルしてインストールされる以外にもたくさんのフォントが下記のリンクからダウンロードできます。


% pwd
/usr/local/src/figlet-2.2.4
% wget ftp://ftp.figlet.org/pub/figlet/fonts/contributed.tar.gz ⏎
% gunzip -dc ./contributed.tar.gz | tar vfx - ⏎
...
たくさんのフォントファイル(*.flf)とコントロールファイル(*.flc)があるので全部纏めてコピーする
% find ./contributed -type f \( -name '*.flf' -or -name '*.flc' \) -exec sudo /bin/cp {} /usr/local/share/figlet/ \;

上記の例では、大量にあるフォントを取捨選択して入れるのが面倒なので全部コピーしてますが、全部入れたくない人はうちのMacで作ったフォントカタログ(figlet-fonts-catalogue.txt)とlsの結果を比べて必要なフォントだけコピーしてください。

フォントの一覧を見てみる

FIGletのソースについているフォントもたくさんありますが、後から追加できるフォントも同じくたくさんあります。ソースからインストールした時に/usr/local/bin/showfigfontsというスクリプトがインストールされていますが、これを使えばどんなフォントが入っているか確認しやすいカタログが出力されます。



実際の出力は大量にあるので、ファイルに書き出してゆっくり眺めるといいでしょう。面倒くさい人はうちのMacで作ったカタログ(figlet-fonts-catalogue.txt)を眺めてください。

figletを使ってみる

僕は前述の例示でも使ったdigital, smkeyboardと、デフォルトのフォントとcharact6をよく使っています。サーバの設定ファイル以外にも少し長めのプログラムでも宣言部分、クラスメソッド、インスタンスメソッドの区切りにもFIGletで作った文字をコメントとして貼り付けています。

概ね次のような感じで使う事が多く、出力を確認してからコメントかする#などを入れてpbcopyコマンドでクリップボードにいれてファイルに貼り付けするという感じです。


manを読むと沢山のオプションが書いていますが、僕が使うのは-fフォント名, -w幅, -c(中央), -r(右寄せ)ぐらいです。-Rオプションを使うと右から左に書き出されます。

まとめ

FIGletは大きくて派手な文字を作り出す小粒なツールです。

サーバにログインするターミナルやプログラムのソースコードなど、等幅フォントの世界で目立たせたい部分をFIGletで作った文字で表現すると視覚的に認識しやすくなります。

フォントの種類も豊富で20年ぐらい前からあるUNIXの伝統的なツールなのでインストールせずとも知っておいて損はないと思います。

参考サイトと関連リンク


1 comment:

  1. FIGLETの出力がずれて見にくいのでGistにしました

    ReplyDelete