我使用过很多虚拟机。用于测试和预生产设置。
我希望登录提示或标题显示机器的 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 7和Debian 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 发行版。