新しい仮想マシンを立て、あるいは久し振りに起動して、さてSSHで繋ごうと思ってもIPアドレスがわからずコンソールから一旦ログインしてIPアドレスを調べて、とやるのはもううんざりだ。

というわけでコンソールを見ればログインせずともIPアドレスを知ることができるよう、ログインプロンプトとともにIPアドレスを表示するようにしておく。

なお、デスクトップマネージャは使用しないものとする。
使用していてもAlt+F2などで別の仮想コンソールにすれば見られるが。

やり方

ログイン前画面の内容を決定するのは/etc/issueである。
このファイルをNICが上がるイベント発生時に書き換えてやれば良い。

とりあえず標準の/etc/issueを退避しておく。

# mv /etc/issue /etc/issue.org

NICが上がるイベント発生時に実行させるスクリプトを作成する。
以下は例だが行っていることは、退避した/etc/issueをコピーして元に戻し、hostname -Iで得られるIPアドレスの一覧を/etc/issueに追加するものである。

#!/bin/sh

cp /etc/issue.org /etc/issue
echo 'IP addresses:' >> /etc/issue
echo $(hostname -I) >> /etc/issue
echo '' >> /etc/issue

このファイルの配置場所はNetworkManagerを使用しているなら /etc/NetworkManager/dispatcher.d/ ディレクトリ内である。
DebianやUbuntuなら/etc/network/if-up.d/ ディレクトリ内、CentOSなら /sbin/ifup-local (これはディレクトリではなくこの名前のファイル)でも良いだろう。

このファイルには実行権限を付ける。ここでは /etc/NetworkManager/dispatcher.d/show-ip-address に配置したとする。

# chmod +x /etc/NetworkManager/dispatcher.d/show-ip-address

これでログインする前の画面にIPアドレスを表示させることができる。

注意事項としては、systemdが使われているとログインする前の画面がNICが上がる前に表示されるのかIPアドレスが表示されないことがある。
その場合は何度かEnterキーを押してやると良いだろう。多少は手間だがログインしてIPアドレスを知るよりは遥かにましだろう。

TOP