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

nel*_*aro 4 linux prompt 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 脚本。有没有更好的办法。

Pao*_*loC 9

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)


bis*_*hop 5

对于使用 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
}
Run Code Online (Sandbox Code Playgroud)

有一个像这样的问题“模板”:

$ cat /etc/issue.template
CentOS release 6.5 (Final)
Kernel \r on an \m

%INTERFACES%
Run Code Online (Sandbox Code Playgroud)

记得

chmod +x /etc/dhcp/dhclient.d/issue.sh
Run Code Online (Sandbox Code Playgroud)

awk命令来获得当前IP和取代它们的/etc/issue.template文件应该被移植到现代的Linux发行版。