ログインプロンプトまたはヘッダー(/etc/issue)を変更して、マシンのIPアドレスを表示します。

ログインプロンプトまたはヘッダー(/etc/issue)を変更して、マシンのIPアドレスを表示します。

私は多くの仮想マシンを扱っています。テストと試作段階のセットアップに使用します。

ログイン プロンプトまたはヘッダーにマシンの IP アドレスを表示したいと思います。そうすれば、起動時にどの IP に SSH 接続するかを確認できます。私たちのネットワークは DHCP を使用して動作します。そのため、起動ごとに変更される可能性があります。

$ cat /etc/issue
Ubuntu 11.04 \n \l

それは次のように現れる

Ubuntu 11.04 [ホスト名] tty[x]

私はそれが

Ubuntu 11.04 [ホスト名] tty[x] ip xxx.xxx.xxx.xxx

init / upstart スクリプトを書こうと考えていました。もっと良い方法はありますか。

答え1

ゲッティはマシンのIPアドレスを知りません。しかし、この質問はすでにサーバー障害受け入れられた答えは次のとおりです。

これは単なるテキスト ファイルです。他のシェル スクリプトを使用してファイルにテキストを送信するのと同じ方法で書き込みます。次のようにすると、/etc/issue が IP アドレスに置き換えられます。

ifconfig eth0 | awk '/inet addr/ {print $2}' | cut -f2 -d: > /etc/issue

当然ながら、ファイルに必要な情報に応じて、これを任意に複雑にすることができます/etc/issue

このファイルは、ローカルの/etc/rc.d/rc.local(通常は他のすべての起動スクリプトの後に実行されます) と同等のファイルとして書き込むことができます。

また、このファイルは/etc/issue.netリモート ログインに使用されるため、これも編集する必要がある場合があります。

答え2

の上セントOS7そしてデビアン8(他にもあるかもしれません)次の行を追加してください/etc/issue

My IP address: \4

マシンのIPv4アドレスに解決されます。複数のネットワークインターフェースがあり、そのうちの1つを選択したい場合は、次のように指定します。

My IP address: \4{eth0}

答え3

DHCP リース IP を持つ CentOS 5 の場合は、次のスクリプトを使用できます。

$ cat /etc/dhcp/dhclient.d/issue.sh
#!/bin/bash

update_issue() {
    awk -v \
        r="$(ip -o addr | awk '/inet [1-9]+/ { print $2 " " $4 }')" \
        '{ gsub(/%INTERFACES%/,r) }1' \
        /etc/issue.template > /etc/issue
}

issue_config() {
    update_issue
}

issue_restore() {
    update_issue
}

次のような問題の「テンプレート」があります:

$ cat /etc/issue.template
CentOS release 6.5 (Final)
Kernel \r on an \m

%INTERFACES%

覚えておいてください

chmod +x /etc/dhcp/dhclient.d/issue.sh

awk現在の IP を取得してファイル内で置き換えるコマンドは、最新/etc/issue.templateの Linux ディストリビューションに移植可能である必要があります。

関連情報