web-dev-qa-db-ja.com

Precise Serverのログイン画面でeth0のIPアドレスを表示するにはどうすればよいですか?

私が管理しているサーバーには、不便なことに、DHCPによって動的IPアドレスが割り当てられています。しかし、便利なカウンターバランスは、たまたま私が座っている場所から約2フィートのところに設置されることです。ログインプロンプトがディスプレイに表示される前に/ etc/issueを編集して異なる値を表示する方法は知っていますが、/ etc/issueがeth0の現在のIPアドレスを表示できるかどうかを知りたい(再評価されます)ブート時に)を参照して、ifconfigを実行するためにログインする必要なくsshで表示できるようにします。

22
ssonicblue

Debian 8/jessieでは、\4および\6エスケープ文字を使用して、IPv4およびIPv6アドレスを出力できます。 /etc/issueファイル:

Debian GNU/Linux 8 \n \l

eth0: \4{eth0}

ログインコンソールで次のようなものを出力します。

Debian GNU/Linux 8 myserver tty1

eth0: 192.168.1.100
myserver login:

Ubuntuは(少なくとも新しいリリースでは)同様の機能を提供すると思います

26
jerrykan

残念ながら/etc/issueはプレーンテキストです。追加できるオプションがいくつかありますが(man agettyを参照)、eth0のIPアドレスはありません。

これを/etc/rc.localに入れると:

IP=$(/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}')
echo "eth0 IP: $IP" > /etc/issue

次に、このようなものが表示されます:

eth0: 192.168.0.2
myServer login:
12
Alex R

Alexの答えとRebsのコメントに基づいて、これは私の/etc/rc.localファイル(関連する行のみ)にあります:

PRE_MSG="Ubuntu 14.04.3 LTS" # this is from the original /etc/issue

IP=$(/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}')

IP_MSG="Server IP Address:"

printf "%s %s %s\n\n%s %s\n\n" "$PRE_MSG" '\n' '\l' "$IP_MSG" "$IP" > "/etc/issue"

printfコマンドは魔法を使います。残念ながら、フォーマット文字列内に'\n''\l'を置くと、最初の文字列が改行文字に置き換わり、/etc/issueファイルが台無しになりました。

要するに、これらの4行は/etc/issueファイルによって表示される元の情報を保持し、Server IP Address:メッセージを追加します。

Rebsが言ったように、サーバーを再起動するたびにこのスクリプトが/etc/issueファイルをオーバーライドするので、別のスクリプト内で別のファイルで試して、動作したら変更を転送することを忘れないでください以上...

幸運と幸せなBASHing :)

1
nurchi

Systemdを使用すると、次のような方法でsystemctl edit getty@を実行できます。

[Service]
ExecStartPre=-/bin/bash -c '[ ! -f /etc/.issue.orig ] && cp /etc/issue /etc/.issue.orig; int=`ls /sys/class/net|grep enp|head -1`; sed -r "s/\\\\\\n/[\\\\\\4\{$$int\}]/" < /etc/.issue.orig > /etc/issue'

次にsystemctl daemon-reload && systemctl restart getty@tty1

0
h0tw1r3

Ubuntu 19.04では、次の手順を実行しました。

次の内容のファイルを作成しました:/etc/network/if-up.d/update-issue

#!/bin/sh
PREFIX="Ubuntu 19.04 - dev"
IPADDRS=$(hostname -I | tr " " "\n" | grep -v "^$" | sort -t . -k 1,1n | head -1 | tr "\n" " ")
echo "$PREFIX\n\nIP: $IPADDRS\n" > /etc/issue

次に、ファイルを実行可能としてマークしました:chmod 0755 /etc/network/if-up.d/update-issue

よく働く!

0
Steve McDonald