新しい仮想マシンを立て、あるいは久し振りに起動して、さて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アドレスを知るよりは遥かにましだろう。