他のすべてのスクリプトのように実行される99-wlan0-RWB
新しいスクリプトを作成しました。/etc/update-motd.d
単独で実行するか、経由で実行すると機能しますrun-parts
が、ログインすると機能しません。何が問題ですか? (ラズベリーパイでも同じ問題が発生しました。まったくスクリプトを実行していますupdate-motd.d
。 )(には何もありません/var/log/syslog
。)
$ ssh root@mini31
Linux mini31 4.19.0-18-amd64 #1 SMP Debian 4.19.208-1 (2021-09-29) x86_64
External IP: xx.yyy.zzz.www
______________________________________
/ 1st graffitiist: QUESTION AUTHORITY! \
| |
\ 2nd graffitiist: Why? /
--------------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
df: 43G (81%)
O2: 1.65 GB / 3.3 GB
Lebara: 6.49 MB / 66 MB
up: 10 days, la: 1:0.11, 5:0.14, 15:0.10
mssql tempdb.mdf is 515M
CPU temp.: +52.0
No mail.
mini31 # cd /etc/update-motd.d/
mini31 # ./98-data
df: 43G (81%)
O2: 1.65 GB / 3.3 GB
Lebara: 6.49 MB / 66 MB
up: 10 days, la: 1:0.18, 5:0.15, 15:0.10
mssql tempdb.mdf is 515M
CPU temp.: +50.0°C
mini31 # ./99-wlan0-RWB
wlan0 is up
mini31 #
答え1
私も同じ問題があり、何が起こっているのかを調べるのに3日の夜がかかりました。しかし、ファイル名に大文字があります。ファイル名をすべて小文字に変更すると、動作が開始されます。残念ながら、命名規則に関する文書にはこの内容は記載されていません(https://manpages.ubuntu.com/manpages/jammy/en/man5/update-motd.5.htm)
答え2
最新のシステムでは、MOTDはpam_motd
PAM認証/権限付与サブシステムによって制御されます(参考資料を参照man pam_motd
)。セッションが開かれるとsshd
ツールによってトリガされます。login
関連項目のソースは次のとおりです。/etc/pam.d/sshd
# Print the message of the day upon successful login.
# This includes a dynamically generated part from /run/motd.dynamic
# and a static (admin-editable) part from /etc/motd.
session optional pam_motd.so motd=/run/motd.dynamic
session optional pam_motd.so noupdate
最初の項目で参照されているファイルは、/run/motd.dynamic
処理ディレクトリの実行可能スクリプトによって生成されます/etc/update-motd.d/
。つまり、ユーザーがログインするたびにファイルが更新されます。
2番目の項目は単に固定ファイルの内容を出力します/etc/motd
。
これで、スクリプトが実行されない理由について2つの提案があります。
- リンクされたディレクトリおよび/またはファイルに対する権限が
/etc/update-motd.d
広すぎます。 (これが問題かどうかはわかりませんが、rootとして実行されるので問題になります。) - PAM定義ファイルのエントリが欠落しているかコメント化されました。
答え3
/etc/motd
ログイン時の更新方法は次のとおりです。私はこれを私のRPi OSの壊れたシステムでテストしました、それは私にとって効果的です。pam_motd
同じまたは類似の結果を得るための別の方法(例:使用)があります。私が注意を払わなければ、単純なMOTDはかなり複雑になりました。これDebian Wikimotd
Raspberry Pi OS などの Debian ベースのディストリビューションに関するほとんどの詳細を扱い、他の多くの一般的motd
なディストリビューションの処理方法もまとめています。
ログイン時にファイルを作成/更新する1つの方法/etc/motd
は、ログイン時にコマンドを実行して更新することです。ログインスクリプトの場合は、bash
このファイルで実行できます~/.profile
。
pi
以下は、SSHログインを介して私のシステムで動作する簡単な例です。 userの末尾に追加された1行のコマンドシーケンス~/.profile
。変更には権限が必要なので、次のように/etc/motd
ファイルroot
に最も便利に書き込むことができます。tee
sudo
printf "Hello from .profile for %s.\n" $USER | sudo tee -a /etc/motd >/dev/null
-a
多くのユースケースに適していない可能性があるtee
オプションを添付するのは、単に引数を省略してオーバーライド(同等)を呼び出すことです。また、リダイレクトを使用すると、MOTD/etc/motd
>
-a
/dev/null
繰り返す端末のログイン画面から
メモ:
sudo
ユーザーがpi
ファイルに設定を持っているので、ここでは呼び出しが機能します。現在NOPASSWD
sudoers
基本RPi OSブレーカの設定。SSHログイン用のMOTDマーク制御されているそうです。
/etc/ssh/sshd_config
パス()からPrintMotd
。しかし、、Debianディストリビューションの場合、このオプションをデフォルト値()no
に設定する必要があり、MOTDは1回、再度から2回出力されます。sshd
yes
sshd
pam_motd
reのコメントを読んでください
~/.profile
。~/.bash_profile
または存在します~/.bash_login
。