VirtualBox マネージャーのプレビューに IP アドレスをでっかく表示

VirtualBox にはヘッドレスモードというものがあり、コンソールのウィンドウを非表示のまま起動させることができます。

 - [VBoxHeadless（ウィンドウ非表示起動） | VirtualBox Mania](http://vboxmania.net/content/vboxheadless%EF%BC%88%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E9%9D%9E%E8%A1%A8%E7%A4%BA%E8%B5%B7%E5%8B%95%EF%BC%89-0 "VBoxHeadless（ウィンドウ非表示起動） | VirtualBox Mania")

ヘッドレスモードを使う方法は幾つかありますが、一番簡単なのは **「ゲストを起動するときに Shift を押しながら起動ボタンをクリック」** です。

邪魔なコンソールウィンドウが無くなってスッキリと起動させることができます・・・が、1つ欠点があります。

ゲストが DHCP で IP アドレスを割り当てている場合、コンソールにログインして IP アドレスを確認することができません。

構築済みの環境であれば、下記のようにホスト名が DDNS で登録されるようにしておけばいいのですが、

- [CentOS で dhclient で DDNS 登録](http://ngyuki.hatenablog.com/entry/20120725/p1 "CentOS で dhclient で DDNS 登録")

OVA からインポートしたばかりの仮想環境だとそういうわけにはいきません。

リモートデスクトップでコンソールにアクセスすることもできますが・・・IP アドレスを確認するためだけにリモートデスクトップとかめんどいです。

 - [VRDP（仮想リモートディスプレイプロトコル） | VirtualBox Mania](http://vboxmania.net/content/vrdp%EF%BC%88%E4%BB%AE%E6%83%B3%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%83%87%E3%82%A3%E3%82%B9%E3%83%97%E3%83%AC%E3%82%A4%E3%83%97%E3%83%AD%E3%83%88%E3%82%B3%E3%83%AB%EF%BC%89 "VRDP（仮想リモートディスプレイプロトコル） | VirtualBox Mania")

VirtualBox マネージャーにコンソールのプレビューが表示されるので、DHCP でホスト名に IP アドレスが含まれるように設定して、プレビューでログインプロンプトに表示されているホスト名を確認するという案を考えましたが・・・

 - [ISC dhcpd で IP アドレスに基いてホスト名を自動設定](http://ngyuki.hatenablog.com/entry/2014/08/05/185507 "ISC dhcpd で IP アドレスに基いてホスト名を自動設定")

小さすぎて見えません！！！

![01.png](https://qiita-image-store.s3.amazonaws.com/0/8734/136f3c30-30cf-eb5f-dbbd-9b61c2d52988.png)

なので、この小さい画面でも見えるように、ホストの IP アドレスを大きくばばーんと表示させることにしました。

 - [auto generate issue for centos6](https://gist.github.com/ngyuki/0eec312980770a34be42 "auto generate issue for centos6")

このスクリプトを次のようにインストールします。

```
yum -y install epel-release
yum -y install banner
curl -fsSL -o /etc/init.d/autoissue \
  https://gist.githubusercontent.com/ngyuki/0eec312980770a34be42/raw/autoissue
chmod +x /etc/init.d/autoissue
chkconfig --add autoissue
```

再起動すると、VirtualBox マネージャーのプレビューの画面にばばーんと大きく IP アドレスが表示されます。

![02.png](https://qiita-image-store.s3.amazonaws.com/0/8734/1763da4a-c1e4-7b5b-7784-d7b3e55bad74.png)

## 仕組みとか

`/etc/issue` はログインプロンプトの前に表示されるメッセージで、CentOS 6 だと次のような内容になっています。

```
CentOS release 6.6 (Final)
Kernel \r on an \m
```

`\r` や `\m` は、カーネルのバージョンやアーキテクチャに置換されるので、下記のように表示されます。

```
CentOS release 6.6 (Final)
Kernel 2.6.32.504.1.3.el6.x86_64 on an x84_64

ip-192.168.8.202 login: 
```

前述のスクリプトで、起動時にホストの IP アドレスを取得して `banner` コマンドで `/etc/issue` にでっかく書き込みます。

するとログインのプロンプトが次のように表示されるようになります。

```
CentOS release 6.6 (Final)
Kernel 2.6.32.504.1.3.el6.x86_64 on an x84_64
===

        #     ###    ###            #     ###    ###
       ##    #   #  #   #          ##    #   #  #   #
      # #    #   #  #   #         # #    #      #   #
        #     ###      #            #    ####    ###
        #       #     #     ###     #    #   #  #   #
        #      #     #      ###     #    #   #  #   #
      #####  #      #####   ###   #####   ###    ###


                    ###           ###    ####    ###
                   #   #         #   #  #   ##  #   #
                   #   #         #   #  #  # #  #   #
                    ###             #   # #  #     #
             ###   #   #   ###     #    ##   #    #
             ###   #   #   ###    #     #    #   #
             ###    ###    ###   #####   ####   #####


ip-192.168.8.202 login: 
```

CentOS 7 は banner コマンドが epel からインストールできなかったので対応できていません。
figlet という似たようなコマンドがあったので、figlet を使うように変更すれば CentOS 7 にも対応できると思います。