Linux(centos7)开机命令行字符欢迎界面修改显示IP
Linux 有两个公告栏:
1.登录前显示的“公告栏”配置文件/etc/issue ;
2.登录后显示的“布告栏”文件 /etc/motd即message of today(布告栏信息)
这两个是普通文件,是程序,所以只支持以下 \ 斜杠开头的内容解释。
\d 本地端时间的日期; \l 显示第几个终端机接口; \m 显示硬件的架构等级 (i386/i486/i586/i686...); \n 显示主机的网络名称; \o 显示 domain name; \r 操作系统的版本 (相当于 uname -r) \t 显示本地端时间的时间; \S 操作系统的名称;(大写S) \v 操作系统的版本。
------------------------- 正文开始 --------------------------
一、issue文件,启动显示 IP 信息
既然 issue 不能执行代码,就用插入内容的方法显示内容。
1. 创建获,取系统IP的脚本, vim /bin/issue-show-IP.sh
1 #!/bin/sh 2 #--------------------------------------------------------------- 3 # Date: 4 # 2023/01/04 5 # URL: https://www.cnblogs.com/wutou/p/17024073.html 6 # 脚本功能: 7 # 获取本机 IP 后,将 IP 插入到 issue 文件,在开机字符欢迎界面,显示IP。 8 #--------------------------------------------------------------- 9 10 ## 获取本机IP 11 ipaddr=`ip addr | grep "scope global" | awk '{print $2}' |awk -F/ '{print $1}' | tr '\n' ' '` 12 ## 备份 issue 的新文件名 13 bak_issue_name='issue.e.bak' 14 15 ## 备份 /etc/issue 文件 16 if [ -f /etc/${bak_issue_name} ];then 17 ## 恢复备份,清空上次插入结果,为新插入做准备 18 `cp /etc/${bak_issue_name} /etc/issue` 19 else 20 ## 备份 21 `cp /etc/issue /etc/${bak_issue_name}` 22 fi 23 24 25 ## 插入内容到 /etc/issue 26 echo "" >> /etc/issue 27 echo "IP: $ipaddr" >> /etc/issue 28 echo "open browser http://$ipaddr" >> /etc/issue 29 echo "" >> /etc/issue
2. 创建,开启启动服务配置: vim /etc/systemd/system/issue.service
(开机运行sh脚本有多种方式,这里选择用服务启动。其他方式,参考:https://blog.csdn.net/zhanhjxxx/article/details/122811638)
[Unit] Description=Issue INFO #After=NetworkManager-wait-online.service After=network.target [Service] Type=oneshot User=root ExecStart=/bin/issue-show-IP.sh [Install] WantedBy=multi-user.target
[Unit]:服务的说明
Description: 描述服务
After: 定义服务启动的依赖条件 (After=network.target启动完network才执行此服务。后面还可以跟依赖项)After=NetworkManager-wait-online.service 代表,依赖 NetworkManager 服务启动完成后才执行 issue-show-IP.shAfter=network.target 代表,依赖 network 服务启动完成后才执行 issue-show-IP.sh[Service]:服务运行参数的设置
Type=forking 是后台运行的形式
ExecStart为 服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True 表示给服务分配独立的临时空间
注意:启动、重启、停止命令全部要求使用绝对路径
[Install]:服务安装的相关设置,可设置为多用户
After=network.target
After=syslog.target
经过试验,如果有相同的键,则取第一个。如上两个 After 键,那会取 After=network.target
如果有 # 号开头的,视为注释,则忽略
3. 查看,服务列表中有没有 issue.service
systemctl list-unit-files |grep issue.service
-图片里显示已经添加完成,默认是禁用状态
4. 设置,服务开机启动
systemctl enable issue.service
systemctl list-unit-files |grep issue.service
-
5. 开机显示IP:
二、motd文件,登录后显示 loging 信息
1.输入内容:vim /etc/motd
loging.....
-
2.登录后显示内容:
参考:
https://blog.csdn.net/weixin_36255837/article/details/116748570
https://www.cnblogs.com/lishidefengchen/p/11640091.html
https://www.cnblogs.com/mafeng/p/10697303.html
https://blog.csdn.net/m0_66434421/article/details/146710441 (After:定义服务启动的依赖条件。postgresql.service:表示依赖其他服务(如数据库))
https://www.cnblogs.com/usmile/p/13065594.html
After=network.target