如何在Precise Server的登录屏幕上显示eth0的IP地址?


23

我管理的服务器非常不便,它具有DHCP分配的动态IP地址。但是,方便的平衡是恰好在距我坐着的地方约两英尺的地方进行了设置。我知道如何在登录提示传递到显示器之前编辑/ etc / issue以显示不同的值,但是我想知道/ etc / issue是否有可能显示eth0的当前IP地址(重新评估)在启动时),这样我就可以看到它,然后通过ssh登录,而无需登录运行ifconfig。


可以在登录屏幕中使用conky吗?如果是这样,您可以方便地获取各种信息。
2012年

Answers:


27

从Debian 8 / jessie开始,您可以使用\4\6转义字符来输出IPv4和IPv6地址。所以/etc/issue文件:

Debian GNU/Linux 8 \n \l

eth0: \4{eth0}

将在登录控制台上输出类似以下内容的内容:

Debian GNU/Linux 8 myserver tty1

eth0: 192.168.1.100
myserver login:

我想Ubuntu将提供类似的功能(至少在较新的版本中)


这在Ubuntu 16.04 LTS中对我有用,标记为正确的答案没有,可能是grep注释的问题,无论如何,感谢您发布此内容。
Tracker1

它仍然可以在Debian 9上使用:)
Borkon

12

/etc/issue不幸的是,它是纯文本,可以添加一些选项(请参阅man agetty参考资料),但不能添加eth0的IP地址。

如果您输入/etc/rc.local

IP=$(/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}')
echo "eth0 IP: $IP" > /etc/issue

然后,您将看到类似以下内容:

eth0: 192.168.0.2
myServer login:

3
请注意,任何运行此命令的人都会覆盖/ etc / issue的内容。您可以添加步骤以grep出前面的“ eth *”行,然后附加它们。
Rebs

1

基于Alex的回答和Rebs的评论,这就是我要保存的/etc/rc.local文件的内容(仅相关行):

PRE_MSG="Ubuntu 14.04.3 LTS" # this is from the original /etc/issue

IP=$(/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}')

IP_MSG="Server IP Address:"

printf "%s %s %s\n\n%s %s\n\n" "$PRE_MSG" '\n' '\l' "$IP_MSG" "$IP" > "/etc/issue"

printf命令具有魔力。不幸的是,将'\n'and '\l'放在格式字符串中最终导致用换行符替换第一个,并且/etc/issue文件被弄乱了。

长话短说,这4行保留了/etc/issue文件显示的原始信息并添加了Server IP Address:消息。

就像Rebs所说的那样,请记住,每次重新启动服务器时,此脚本都会覆盖/etc/issue文件,因此也许可以在不同的脚本中和不同的文件上尝试该文件,然后在工作后将更改转移...

祝你好运,快乐的打击:)


0

使用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


0

对于Ubuntu 19.04,我遵循以下步骤:

我创建了文件:/etc/network/if-up.d/update-issue具有以下内容:

#!/bin/sh
PREFIX="Ubuntu 19.04 - dev"
IPADDRS=$(hostname -I | tr " " "\n" | grep -v "^$" | sort -t . -k 1,1n | head -1 | tr "\n" " ")
echo "$PREFIX\n\nIP: $IPADDRS\n" > /etc/issue

然后,我将该文件标记为可执行文件: chmod 0755 /etc/network/if-up.d/update-issue

很棒!


0

以Nurchi为基础,Alex和Steve的回答以及Reb的评论,

以下将grep旧IP并添加任何非本地(127.)IP地址。我的服务器是VM,没有eth0。在Ubuntu 18.04上测试

放入 /etc/network/if-up.d/update-issue

#!/bin/sh
MSG=$(cat /etc/issue | grep -v IP)
IP=$(/sbin/ifconfig | grep 'inet' | grep -v '127' | cut -d: -f2 | awk '{ print $2 }')
printf "%s\n%s\n\n" "$MSG" "IP: $IP" > /etc/issue

然后 chmod 0755 /etc/network/if-up.d/update-issue

我的答案和史蒂夫的唯一区别是增加了grep行以删除IP行,捕获消息并与新的/更新的IP一起读取

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.