终端 login banner 显示 ip

1. 目的

虚拟机安装的Arch linux,没装图形界面,配置的dhcp。为了方便通过ssh登录,便想起这个方法,然而并不知道怎么弄,于是搜索了一番,找到下面参考,记录一下免得忘了:

blog.sina.com.cn/s/blog_621bce900100wbzf.html

Running Services After the Network is up

2. 实现

登录信息在/etc/issue 和 /etc/motd 中,此处只需要修改/etc/issue,步骤就是在网络启动之后,用ifconfig或者ip addr取得并提取ip地址,输出到/etc/issue。由于现在的版本已经没有/etc/rc.local,所以要添加一个systemd的服务,这个服务调用脚本去做这个事。

1. 脚本文件/etc/rc.local:

#!/bin/bash

ipaddr=$(/usr/bin/ip addr | /usr/bin/sed -ne 's/.*inet \([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\)\/\([0-9]\{1,3\}\) *b.*/\1/p')

logintime=$(date)

echo "Arch Linux \r (\l) ($ipaddr - $logintime)" >/etc/issue

2. service文件

取个名字rc-local.service,文件就放在/etc/systemd/system/下面好了,由于systemd启动的服务是并行的,所以可能ip地址还没分配好,这个脚本就执行完了。只能在起个服务了

systemctl enable netctl-wait-online.service

(systemd目录下有netctl-wait-online.service 和 systemd-networkd-wait-online.service)

同时加上Wants= and After= dependency on network-online.target

[Unit]

Description=/etc/rc.local Compatibility

Wants=network-online.target

After=network-online.target

[email protected]

[Service]

Type=oneshot

ExecStart=/etc/rc.local

TimeoutSec=0

RemainAfterExit=yes

[Install]

WantedBy=multi-user.target

3. 效果


终端 login banner 显示 ip_第1张图片

4.freebsd

/etc/rc.local

#!/bin/sh

ipaddr=$(ifconfig | sed -ne 's/.*inet \([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\)\( .*b.*\)/\1/p')

echo " " > /etc/issue

echo "ip=($ipaddr)" >> /etc/issue

你可能感兴趣的:(终端 login banner 显示 ip)