GNU/Linux >> Tutoriels Linux >  >> Linux

Quelles sont les différentes manières d'afficher un message dans un shell bash après la connexion d'un utilisateur ?

Les systèmes Unix traditionnels affichent /etc/motd après l'authentification réussie de l'utilisateur et avant l'appel du shell de l'utilisateur. Sur les systèmes modernes, cela est fait par le pam_motd Module PAM, configurable en /etc/pam.conf ou /etc/pam.d/* pour afficher un autre fichier.

Le serveur ssh lui-même peut être configuré pour imprimer /etc/motd si le PrintMotd l'option n'est pas désactivée dans /etc/sshd_config . Il peut également imprimer l'heure de la connexion précédente si PrintLastLog n'est pas désactivé.

Un autre message traditionnel pourrait vous dire si ce You have new mail ou You have mail . Sur les systèmes avec PAM, cela est fait par le pam_mail module. Certains shells peuvent imprimer un message sur le courrier disponible.

Une fois le shell de l'utilisateur lancé, les fichiers de démarrage de l'utilisateur peuvent imprimer des messages supplémentaires. Pour une connexion interactive, si le shell de connexion de l'utilisateur est un shell de style Bourne, regardez dans /etc/profile , ~/.profile , plus ~/.bash_profile et ~/.bash_login pour bash. Pour une connexion interactive à zsh, regardez dans /etc/zprofile , /etc/zlogin , /etc/zshrc , ~/.zprofile , ~/.zlogin et ~/.zshrc . Pour une connexion interactive à csh, regardez dans /etc/csh.login et ~/.login .

Si le shell de connexion de l'utilisateur est bash et qu'il s'agit d'une connexion non interactive, alors bash exécute ~/.bashrc (ce qui est vraiment étrange, puisque ~/.bashrc est exécuté pour les shells interactifs uniquement si le shell n'est pas un shell de connexion). Cela peut être une source de problèmes; Je recommande d'inclure l'extrait suivant en haut de ~/.bashrc pour renflouer si le shell n'est pas interactif :

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

Il y en a quelques-uns :

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

De plus

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

Vous devrez peut-être également parcourir chaque programme appelé à partir de ces scripts, car quelque chose comme fortune pourrait stocker les plaisanteries qu'il affiche dans /usr/share . Pour l'isoler vous pouvez faire :

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

Sur Ubuntu il y a aussi le fichier :

/etc/motd.tail

Les systèmes plus récents stockent les composants MOTD dans /etc/update-motd.d afin que diverses macros puissent être exécutées pour personnaliser le motd afin que les informations de mise à jour, les alertes système, etc. s'affichent lors de la connexion.

Ajoutez votre personnalisation dans un autre fichier avec une priorité de 00 à 99

99-footer charge généralement /etc/motd.tail s'il suffit de le clouer à la fin et que vous ne souhaitez utiliser aucun des éléments de la macro.


Linux
  1. Personnalisation du shell Bash

  2. CentOS / RHEL :Comment changer le shell de connexion de l'utilisateur

  3. UNIX / Linux :Qu'est-ce qu'un Shell ? Quels sont les différents coquillages ?

  4. Quel est le but de chacun des différents UID qu'un processus peut avoir ?

  5. Quels sont les inconvénients des files d'attente de messages de Linux ?

Qu'est-ce que le Shell sous Linux ?

Quelle est la différence entre la connexion et le shell sans connexion

Comment puis-je utiliser Bash comme shell de connexion lorsque l'administrateur système refuse de me laisser le changer ?

Quels sont les différents types de shells sous Linux ?

Quel est ce total dans la toute première ligne après ls -l ?

Quelle est la différence entre exécuter un script Bash et le sourcer ?