update-motd.d脚本未运行

Pau*_*gin 5 ssh bash ubuntu ubuntu-14.04

我在下面创建了一个测试脚本以添加到/etc/update-motd.d/05-lsb-release

#!/bin/sh
echo
lsb_release -a
Run Code Online (Sandbox Code Playgroud)

但是当我重新启动计算机,重新启动SSH并通过SSH连接到它时,我看不到已应用更改

Welcome to Ubuntu 14.04.5 LTS (GNU/Linux 3.13.0-105-generic x86_64)

0 packages can be updated. 0 updates are security updates. 

Last login: Sun Dec 11 17:08:40 2016 from xxx.xxx.xxx.xxx
paul@ubuntu1404:~$
Run Code Online (Sandbox Code Playgroud)

/var/run/update-motd.dynamic中的输出与上面相同,但是/var/run/update-motd.dynamic.new显示正确的信息

Welcome to Ubuntu 14.04.5 LTS (GNU/Linux 3.13.0-105-generic x86_64)

Distributor ID: Ubuntu
Description:    Ubuntu 14.04.5 LTS
Release:        14.04
Codename:       trusty

0 packages can be updated.
0 updates are security updates.
Run Code Online (Sandbox Code Playgroud)

登录后如何查看更改?

我正在运行Ubuntu 14.04.5 LTS的最新更新

ret*_*eto 8

您的motd脚本中可能有一个错误。检查:

run-parts /etc/update-motd.d/ > /dev/null
Run Code Online (Sandbox Code Playgroud)

如果此命令报告错误,则需要修复它们。


Tho*_*ner 6

像(ubuntu?也许 debian 也是如此?)系统一样测试你的 motd

/usr/bin/env -i PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin run-parts --lsbsysinit /etc/update-motd.d

(取自此博客https://ownyourbits.com/2017/04/05/customize-your-motd-login-message-in-debian-and-ubuntu/

就我而言,lolcat 在 utf8 字符上快要死了,因为它是用 ASCII 作为其语言启动的,通过在 local 调用前面加上前缀来修复LANG=en_US.UTF-8 lolcat ...


Jak*_*uje 4

它是在 PAM 中配置的。查看该文件/etc/pam.d/sshd。有一行诸如

session    optional     pam_motd.so noupdate
Run Code Online (Sandbox Code Playgroud)

这会阻止登录时的动态更新(您的“动态”MoTD 是相当静态的,因此每次登录时更新它是没有意义的,不是吗?)。

更多描述见AskUbuntu