不登陆系统就不知道IP,在某些时候有点尴尬,之前见过在EVE模拟器上能够开机不登陆就显示ip
所以研究了下如何能做到,顺便记录下来,以免忘记~
登陆前显示公告的配置文件是:/etc/issue ;
登陆后显示公告的配置文件是:/etc/motd ; ( message of today )
这两个是普通的文本文件,只支持简单的一些转义,罗列如下:
\d 本地端时间的日期;
\l 显示第几个终端机接口;
\m 显示硬件的架构等级 (i386/i486/i586/i686...);
\n 显示主机的网络名称;
\o 显示 domain name;
\r 操作系统的版本 (相当于 uname -r)
\t 显示本地端时间的时间;
\S 操作系统的名称;(大写S)
\v 操作系统的版本。
所以,简单编辑这两文件都做不到我想要的结果。
那就考虑用自建开机服务程序去获取ip并写入到/etc/issue , 操作方法如下:
编写shell文件 vim /bin/issue.sh ,根据ip addr命令并使用awk命令得到ip后写入文件
#!/bin/sh
ipaddr=`ip addr | grep "scope global" | awk '{print $2}' | awk -F/ '{print $1}' | head -1`
#以下代码检测issue.e.bak是否存在,如果存在就还原为原始文件用于追加写入上面得到的ip,如果不存在,就备份为issue.e.bak
if [ -f /etc/issue.e.bak ] ; then
`cp /etc/issue.e.bak /etc/issue`
else
`cp /etc/issue /etc/issue.e.bak`
fi
echo "" >> /etc/issue
echo "This host's IP is : $ipaddr" >> /etc/issue
echo "" >> /etc/issue
编写开机启动服务配置文件: vim /etc/systemd/system/issue.service
[Unit]
Description=Issue INFO
After=NetworkManager-wait-online.service
[Service]
Type=oneshot
User=root
ExecStart=/bin/issue.sh
[Install]
WantedBy=multi-user.target
设置服务开机启动并检查:systemctl enable issue.service & systemctl list-unit-files | grep issue.service
[root@centos8-test ~]# systemctl list-unit-files | grep issue.service
issue.service enabled
4.最后,reboot下您的机器。然后就能看到效果啦~