/etc/motd でラピュタ機運を盛り上げよう！？


# はじめに
約 2 年半ぶりの[金曜ロードSHOW！での「天空の城ラピュタ」放映](https://kinro.jointv.jp/lineup/160115)までいよいよあと 1 週間を切りました。
せっかくなので周りのサーバのログインメッセージ `/etc/motd` をラピュタの AA に設定し、
当日を迎える心構えを万全にしておきましょう！

![イメージ](https://qiita-image-store.s3.amazonaws.com/0/103430/d88f2bd7-8f21-bb3a-e39b-ddd19831ab2b.png "バルス!")


# /etc/motd とは
サーバに SSH などでログインしたときに表示されるメッセージです。
(motd = message of the day)

```shell-session:例(Ubuntuの場合)
$ ssh hoge
Welcome to Ubuntu 12.04.5 LTS (GNU/Linux 3.2.0-69-generic x86_64)

 * Documentation:  https://help.ubuntu.com/
New release '12.10' available.
Run 'do-release-upgrade' to upgrade to it.

Last login: Fri Jan  8 00:00:00 2016 from 192.0.2.1
$
```

## RHEL/CentOS系
`/etc/motd` は実ファイルになっていて、ログイン時に内容がそのまま表示されます。
デフォルトでは空ファイルなので、このファイルを直接編集して AA を表示させましょう。

## Debian/Ubuntu系
`/etc/motd` は `/var/run/motd` へのシンボリックリンクになっており、
ログインするたびに `/etc/update-motd.d` ディレクトリ内のスクリプトが順に実行され、
その実行結果が表示されるようになっています。

その中の `/etc/update-motd.d/99-footer` では
`/etc/motd.tail` が存在する場合、その内容を表示しています。

今回はこの `/etc/motd.tail` を作成し AA を表示させます。

# /etc/motd に AA を設定する
## 元絵の用意
まず AA の元となる画像を適当に用意します。

![元絵](https://qiita-image-store.s3.amazonaws.com/0/103430/0ba9720d-ea92-18a8-93c6-485a3857972f.png "いろんなバルスがあるんですね…")
画像の背景を黒など一色で塗りつぶしておくと、生成される AA の見栄えが良くなります。

## caca-utils のインストール
元絵の用意ができたら画像を AA に変換するために `caca-utils` をインストールします。
※ RHEL/CentOS系 ではインストールの前に EPEL リポジトリを有効にしておきます。
(参考 : [CentOSにEPELリポジトリを追加する](http://qiita.com/muniere/items/6c4923a070cbbd824f39) 等)

```shell-session:RHEL/CentOS系
$ sudo yum install caca-utils
```

```shell-session:Debian/Ubuntu系
$ sudo apt-get install caca-utils
```

## AAの生成
`caca-utils` がインストールできたら、さっそく先ほど用意した画像 `hoge.jpg` から AA を生成してみます。
生成には `caca-utils` に含まれている `img2txt` を使用します。
`-W` オプションでターミナルのサイズに合わせて横幅を指定します (単位は文字数)。

```shell-session:RHEL/CentOS系・Debian/Ubuntu系　共通
$ img2txt -W 100 hoge.jpg
```
![img2txt.png](https://qiita-image-store.s3.amazonaws.com/0/103430/78824bbb-fe07-983f-0909-d97369bf5872.png "幅が小さいと細部がつぶれます")

さらに調整したい場合は `img2txt` のオプションを利用できます。

```shell-session:img2txtのオプション一覧
$ img2txt --help
Usage: img2txt [OPTIONS]... <IMAGE>
Convert IMAGE to any text based available format.
Example : img2txt -w 80 -f ansi ./caca.png

Options:
  -h, --help                    This help
  -v, --version                 Version of the program
  -W, --width=WIDTH             Width of resulting image
  -H, --height=HEIGHT           Height of resulting image
  -x, --font-width=WIDTH                Width of output font
  -y, --font-height=HEIGHT              Height of output font
  -b, --brightness=BRIGHTNESS   Brightness of resulting image
  -c, --contrast=CONTRAST       Contrast of resulting image
  -g, --gamma=GAMMA             Gamma of resulting image
  -d, --dither=DITHER           Dithering algorithm to use :
                        none: no dithering
                        ordered2: 2x2 ordered dithering
                        ordered4: 4x4 ordered dithering
                        ordered8: 8x8 ordered dithering
                        random: random dithering
                        fstein: Floyd-Steinberg dithering
  -f, --format=FORMAT           Format of the resulting image :
                        caca: native libcaca format
                        ansi: ANSI
                        utf8: UTF-8 with ANSI escape codes
                        utf8cr: UTF-8 with ANSI escape codes and MS-DOS \r
                        html: HTML
                        html3: backwards-compatible HTML
                        bbfr: BBCode (French)
                        irc: IRC with mIRC colours
                        ps: PostScript document
                        svg: SVG vector image
                        tga: TGA image
                        troff: troff source
```

## /etc/motd への設定
納得のいく AA 生成パラメータがみつかったら、
そのパラメータを使用して `/etc/motd` または `/etc/motd.tail` に書き込みます。

```shell-session:RHEL/CentOS系
$ img2txt -W 120 hoge.jpg | sudo tee -a /etc/motd
```

```shell-session:Debian/Ubuntu系
$ img2txt -W 120 hoge.jpg | sudo tee -a /etc/motd.tail
```

## 確認
それではさっそくログインし直して、うまく設定できたかどうか確認してみましょう。

![イメージ](https://qiita-image-store.s3.amazonaws.com/0/103430/d88f2bd7-8f21-bb3a-e39b-ddd19831ab2b.png "バルス!!")

AA が無事表示されたら成功です！

# あとがき
今回はバルスシーンを使いましたが、他にも飛行石などもインパクトがありそうです。

![飛行石](https://qiita-image-store.s3.amazonaws.com/0/103430/3e9954cf-949e-a6cb-cafd-ea7d252238df.png "わしには強すぎる…")

`caca-utils` が使用している `libcaca` は `ffmpeg` や `mplayer` でも対応しており
動画を AA で再生することもできるので、AA 道(?) を追求するのもまた一興かもしれません。
(とりあえず動くものが見たい場合は `cacafire` や `cacademo` を実行してみてください。)

それではログインするたびにラピュタを思い出して放映当日に備えましょう！
良い週末を :relaxed: