修改登录提示或标题(/etc/issue)以显示机器的 IP 地址

修改登录提示或标题(/etc/issue)以显示机器的 IP 地址

我使用过很多虚拟机。用于测试和预生产设置。

我希望登录提示或标题显示机器的 IP 地址。这样,当我启动它时,我就可以看到我将通过 ssh 进入哪个 IP。我们的网络使用 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 脚本。有没有更好的方法。

答案1

Getty 不知道机器的 IP 地址。但这个问题已经在服务器故障。以下是可接受的答案:

它只是一个文本文件...你向它写入内容的方式与使用任何其他 shell 脚本向文件发送文本的方式相同。类似这样的操作会将 /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 7Debian 8(也可能是其他的),只需将以下行附加到/etc/issue

My IP address: \4

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

My IP address: \4{eth0}

答案3

对于具有 DHCP 租用 IP 的 CentOS 5,您可以使用此脚本:

$ 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

awk获取当前 IP 并在文件中替换它们的命令应该/etc/issue.template可以移植到现代 Linux 发行版。

相关内容