Answers:
这只是一个文本文件...您可以使用与其他任何shell脚本一样将文本发送到文件的方式写入文件。这样的事情将只用您的IP地址替换/ etc / issue:
ifconfig eth0 | awk '/inet addr/ {print $2}' | cut -f2 -d: > /etc/issue
显然,您可以根据/etc/issue
文件中所需的信息来使其更加复杂。
您可以使用/etc/rc.d/rc.local的本地等效文件(通常在所有其他启动脚本之后执行)写入此文件。
ip address show eth0 | awk '/inet / {print $2}' | cut -d/ -f1
ip
上,您应该将其用于此类操作。ifconfig
从技术上讲只是为了兼容性。
在CentOS 7和Debian 8(可能还有其他)上,只需将以下行添加到/etc/issue
My IP address: \4
并将解析为计算机的IPv4地址。如果您有多个网络接口,并且想要选择一个特定的接口,则可以使用
My IP address: \4{eth0}
检查man getty
分发中支持的转义序列的列表。
该脚本将/etc/issue
根据需要向文件添加IP地址/从文件中删除IP地址:
#!/bin/sh
PREFIX="Local IP addresses:"
IPADDRS=$(hostname -I | tr " " "\n" | grep -v "^$" | sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n | tr "\n" " ")
perl -i -p -0777 -e "s/^$PREFIX[^\n]*\n\n//m; s/$/\n$PREFIX $IPADDRS\n/ if length('$IPADDRS')>6" /etc/issue
如果您使用的是基于Debian的发行版,则最好将脚本放在以下位置:
/etc/network/if-up.d/update-issue
/etc/network/if-post-down.d/update-issue
这样,每当界面出现或关闭时,脚本便会执行。将其放置/etc/rc.d/rc.local
在启动过程中的缺点是只能执行一次蜂鸣。
/sbin/if{up,down}-local
。(如果存在,则称为/etc/sysconfig/network-scripts/ip{up,down}-post
。)
--all-ip-addresses
输出“公共” IP地址。也许类似“此主机的所有外部接口的IP地址:”之类的说法更有意义。
你可以写一次。不幸的是,没有盖蒂转义序列可以显示eth0的IP地址,但是您可以在/ etc / issue中使用一个转义序列来显示主机名:\ n
您始终可以通过直接将机器的ip写入文件来在/ etc / issue中静态设置它的ip。请注意,文件/etc/issue.net用于远程登录,因此您可能也要对其进行编辑。
无论如何,在终端窗口中工作后,您将失去初始屏幕和ip /主机地址信息。最好的方法是使用\ h或\ H或再次在提示符下设置主机名(大多数Linux发行版都这样做),以静态方式设置PS1变量中主机上设置的IP地址,您可以在/ etc /中设置PS1变量。大多数Linux发行版上的配置文件。
非常感谢@larsks的入门。我发现在需要脚本之前无法完成脚本,因此问题文件始终为空白。因此我添加了1秒的暂停并循环播放。我并不是真正的bash脚本编写者,所以如果有更好的方法可以做到这一点,请告诉我。我添加了一个COUNT
以确保它不会永远循环。
#!/bin/sh
COUNT=1
while [ $COUNT -lt 10 ]
do
echo $COUNT
COUNT=$((COUNT + 1))
IP=`ifconfig eth0 | awk '/inet addr/ {print $2}' | cut -f2 -d: `
if [ -n "$IP" ]; then
break
fi
sleep 1
done
echo "IP: " $IP | cat > /etc/issue
我将此脚本放在中/etc/network/if-up.d/
。
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的任何人,我最终都会采用@powpow的答案。
我创建了文件:/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
很棒!