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

Bru*_*pes 14 linux virtual-machines centos

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

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

小智 42

CentOS 7Debian 8(也许还有其他)上,只需将以下行附加到/etc/issue

My IP address: \4
Run Code Online (Sandbox Code Playgroud)

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

My IP address: \4{eth0}
Run Code Online (Sandbox Code Playgroud)

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


lar*_*sks 13

它只是一个文本文件……您写入它的方式与使用任何其他 shell 脚本将文本发送到文件的方式相同。像这样的东西会用你的 IP 地址替换 /etc/issue :

ifconfig eth0 | awk '/inet addr/ {print $2}' | cut -f2 -d: > /etc/issue
Run Code Online (Sandbox Code Playgroud)

显然,您可以根据需要在/etc/issue文件中包含哪些信息,使这变得更加复杂。

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

  • 稍微多一点Linuxy 说`ip address show eth0 | awk '/inet / {print $2}' | 剪切 -d/ -f1` (5认同)

pow*_*pow 7

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

#!/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
Run Code Online (Sandbox Code Playgroud)

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

/etc/network/if-up.d/update-issue
/etc/network/if-post-down.d/update-issue
Run Code Online (Sandbox Code Playgroud)

这样,每次界面出现或关闭时都会执行脚本。将其放入/etc/rc.d/rc.local具有在启动期间仅执行一次的缺点。

  • 对于任何搜索,在 Red Hat/CentOS/etc 中,此脚本将是 `/sbin/if{up,down}-local`。(如果存在,它会被`/etc/sysconfig/network-scripts/ip{up,down}-post`调用。) (3认同)