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


23

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


ログイン画面でconkyを使用できますか?もしそうなら、あらゆる種類の情報を手軽に作ることができます。
ディブ

回答:


27

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は同様の機能を提供すると思います(少なくとも新しいリリースでは)


これはUbuntu 16.04 LTSで私にとってはうまくいきましたが、正しいとマークされた答えは正しくありませんでしたが、おそらくgrepコメントの問題でした。
トラッカー

Debian 9でも動作します:)
borekon

12

/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:

3
これを実行している場合は、/ etc / issueの内容が上書きされることに注意してください。前の「eth *」行をgrepする手順を追加してから追加できます。
レブ

1

アレックスの答えと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 :)


0

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

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

Nurchi、Alex、Steveの回答とRebのコメントを基に、

以下は古いIPをgrepし、ローカル(127.)以外のIPアドレスを追加します。私のサーバーはVMであり、eth0がありません。Ubuntu 18.04でのテスト

配置する /etc/network/if-up.d/update-issue

#!/bin/sh
MSG=$(cat /etc/issue | grep -v IP)
IP=$(/sbin/ifconfig | grep 'inet' | grep -v '127' | cut -d: -f2 | awk '{ print $2 }')
printf "%s\n%s\n\n" "$MSG" "IP: $IP" > /etc/issue

それから chmod 0755 /etc/network/if-up.d/update-issue

私の答えとスティーブの答えの唯一の違いは、grep行を追加してIP行を削除し、メッセージをキャプチャし、新規/更新されたIPとともにそれを読み取ることです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.