web-dev-qa-db-ja.com

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

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

ログインpromtまたはヘッダーにマシンの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スクリプトを書くことを考えていました。もっと良い方法はありますか?.

3
nelaaro

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

これは単なるテキストファイルです...他のシェルスクリプトを使用してファイルにテキストを送信するのと同じ方法で書き込みます。このようなものは、/ 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

CentOS 7およびDebian 8(およびおそらく他の)では、/etc/issueに次の行を追加するだけです。

My IP address: \4

これは、マシンのIPv4アドレスに解決されます。複数のネットワークインターフェイスがあり、特定の1つを選択する場合は、次のコマンドで指定できます。

My IP address: \4{eth0}
7
PaoloC

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

$ 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

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

4
bishop