如何设置 /etc/issues 来显示 eth0 的 IP 地址

如何设置 /etc/issues 来显示 eth0 的 IP 地址

我有几个带有桥接接口的 Linux 虚拟机,我希望机器的 IP 地址能够在机器启动后显示(在登录时,通常显示版本和内核)。

据我所知,该消息是从 /etc/issues 中获取的,但我不确定如何以及何时写入它。

答案1

它只是一个文本文件...你向它写入内容的方式与使用任何其他 shell 脚本向文件发送文本的方式相同。类似这样的操作会将 /etc/issue 替换为你的 ip 地址:

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

显然,您可以根据您想要在文件中包含的信息任意使其变得更加复杂/etc/issue

您可以在本地等效的 /etc/rc.d/rc.local 中写入此文件(通常在所有其他启动脚本之后执行)。

答案2

CentOS 7Debian 8(也可能是其他的),只需将以下行附加到/etc/issue

My IP address: \4

这将解析为机器的 IPv4 地址。如果您有多个网络接口,并且想要选择一个特定的,您可以使用

My IP address: \4{eth0}

检查man getty您的发行版上支持的转义序列列表。

答案3

此脚本将根据需要在文件中添加/删除 IP 地址/etc/issue

#!/bin/sh
PREFIX="Local IP addresses:"
IPADDRS=$(hostname -I | tr " " "\n" | grep -v "^$" | sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n | tr "\n" " ")

perl -i -p -0777 -e "s/^$PREFIX[^\n]*\n\n//m; s/$/\n$PREFIX $IPADDRS\n/ if length('$IPADDRS')>6" /etc/issue

如果您使用基于 Debian 的发行版,最好将脚本放在以下位置:

/etc/network/if-up.d/update-issue
/etc/network/if-post-down.d/update-issue

这样,每次接口启动或关闭时都会执行脚本。将其放入的/etc/rc.d/rc.local缺点是启动时只会执行一次。

答案4

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

相关内容