Answers:
从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将提供类似的功能(至少在较新的版本中)
/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:
基于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
文件,因此也许可以在不同的脚本中和不同的文件上尝试该文件,然后在工作后将更改转移...
祝你好运,快乐的打击:)
使用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
对于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
很棒!
以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一起读取