ユーザーがログインした後にメッセージをbashシェルに表示する方法は何ですか?


13

SSH経由でログインした直後にブランドグリーティングを表示するシェルとしてbashを使用するCentOS 5.7 VPSがあります。私はそれを修正しようとしましたが、通常の場所でそれを見つけることができないようです。これまで、motdファイルを調べてsshd_config、バナーファイルの設定を確認しました。バナーファイルが設定されていません。

ログインメッセージがどこにあるのか、他にどこで見つけることができますか?


1
メッセージのサブセットに対して再帰grepを試みることができ/etcます。
ケビン

@Kevin待って、Twitterで私をフォローしていますか?私はgrep -rを使用して何かを見つけていたと思いました。私がdoofusであり、/ =で開始することを決定したことを除いて
ウェスリー

私も始め/て、1TBのディスクを永遠に使い続けます。しかし、私はTwitterに行ったことはありません:)
ケビン

@WesleyDavidはスクリーンショットを投稿できますか?
カールソン

回答:


21

従来のUNIXシステム/etc/motdは、ユーザーが正常に認証された後、ユーザーのシェルが呼び出される前に表示されます。現代のシステムでは、これはpam_motdPAMモジュールによって行われます。PAMモジュールは、別のファイルで設定し/etc/pam.confたり/etc/pam.d/*、別のファイルを表示したりできます。

でオプションがオフになっていない/etc/motd場合は、sshサーバー自体を印刷するように構成できます。オフになっていない場合は、前回のログインの時刻を出力することもあります。PrintMotd/etc/sshd_configPrintLastLog

もう一つの伝統的なメッセージがあるかどうかがわかりかもしれませんYou have new mailYou have mail。PAMを備えたシステムでは、これはpam_mailモジュールによって行われます。一部のシェルは、利用可能なメールに関するメッセージを出力する場合があります。

ユーザーのシェルが起動した後、ユーザーのスタートアップファイルが追加のメッセージを出力する場合があります。対話型ログインの場合、ユーザーのログインシェルがBourneスタイルのシェルである/etc/profile場合~/.profileは、、、~/.bash_profileおよび~/.bash_loginbashを確認します。zshのに対話的なログインのために、で見て/etc/zprofile/etc/zlogin/etc/zshrc~/.zprofile~/.zlogin~/.zshrc。CSHへの対話的なログインのために、で見て/etc/csh.login~/.login

ユーザーのログインシェルがbashで、これが非対話型ログインである場合、bash が実行されます(シェルがログインシェルでない場合にのみ対話型シェルに対して実行されるため~/.bashrc、これは本当に奇妙~/.bashrcです)。これはトラブルの原因になる可能性があります。~/.bashrcシェルが対話型でない場合は、先頭に次のスニペットを追加することをお勧めします。

if [[ $- != *i* ]]; then return; fi

それは私の.bash_profileの一連のエコーでした。> _ <この質問は元の質問とは無関係です。たぶん、メッセージを1人のユーザーにのみ送信したい場合は、より良いでしょう。これは、結局のところ、rootアカウントです。また、私は初心者なので、物事を批判的に判断する立場にはありません。
ウェスリー

@WesleyDavidで何かをエコーすると、.bash_profile自分にメッセージが送信されるだけです。ログイン時に便利なメッセージや面白いメッセージを見るのを好む人もいます。メッセージの内容も関係する人や設定もわからないので、システムのルートアカウントについて話すことはできません。
ジル 'SO-悪であるのをやめる

/ etc / motdにメッセージを書き込むことはMac OS Xで機能しましたが、これで十分です。ありがとう。
dgig

8

いくつかあります:

/etc/motd
/etc/issue
/etc/profile - Could echo the message
/etc/profile.d/* - Would be called from /etc/profile

さらに

/etc/bash_bashrc
/etc/.bashrc
/etc/bashrc
$HOME/.profile
$HOME/.bashrc

また、これらのスクリプトから呼び出されているすべてのプログラムを実行する必要がある場合があります。fortuneこれは、に表示されているクイップを保存できる可能性があるためです/usr/share。それを分離するには、次のことができます:

. /etc/profile
. /etc/bash.bashrc
. $HOME/.profile
. $HOME/.bashrc

Ubuntuには次のファイルもあります。

/etc/motd.tail

1
/etc/issue従来は、ユーザーがログインするではなくログインするに表示されます。
クリスダウン

ありがとう!profileとについて知りませんでしたprofile.d。残念ながら、あなたの提案の4つすべては何も明らかにしませんでした。私は何かカスタムがbashバイナリにコンパイルされているのだろうか?
ウェズリー

@ChrisDown正しいですが、プロンプトが表示された後に画面に何かを表示するシステムを知りません。
カールソン

@WesleyDavid答えを修正しました。
カールソン

すべての情報に感謝します!これにより、シェルがTTYセッションに情報を送信できるさまざまな方法を学ぶことができました。=)
ウェズリー

3

新しいシステムにはMOTDコンポーネントが格納されている/etc/update-motd.dため、さまざまなマクロを実行してmotdをカスタマイズし、ログイン時に更新情報、システムアラートなどを表示できます。

カスタマイズを別のファイルとして追加します。優先度は00から99

99-footer通常/etc/motd.tail、最後にタックするだけで十分で、マクロ項目を使用したくない場合にロードされます。


1

をご覧/etc/shellください。変更しようとしているメッセージが見つかりました。テキストを削除して独自のテキストを追加する必要がある「#」でコメントアウトすることはできません。また、ファイルに配置すると、スペースと改行が表示されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.