Czy można wstawić komendy do / etc / motd?

14

Czy mogę umieścić polecenia powłoki w /etc/motdpliku banera logowania? Próbowałem:

 $(uptime)

i

`uptime`

czy to możliwe?

Justin
źródło

Odpowiedzi:

15

/etc/motd jest tylko odczytywany i nie wykonywany, więc technicznie rzecz biorąc, nie można w nim umieszczać poleceń powłoki.

Możliwe jest jednak wykonanie skryptu powłoki podczas logowania, który będzie miał taki sam wynik. Zwykle osiąga się to poprzez dostosowanie /etc/profileskryptu, który jest wykonywany za każdym razem, gdy użytkownik się loguje. Przydatną praktyką jest umieszczenie polecenia, które ma zostać wykonane, w skrypcie o nazwie /etc/motd.shi wywołanie tego skryptu /etc/profile, zwykle na końcu.

Tonin
źródło
3
nie jest powszechną praktyką używanie /etc/motd.sh
1
@EricDANNIELOU Tak, można użyć dowolnej nazwy skryptu. Właśnie usunąłem wspólny przymiotnik, który nie był odpowiedni. Mimo to, nazwanie go w ten sposób ułatwia wykrycie i określenie, do czego służy.
Tonin,
1
Wydaje się, że istnieje sposób używania crona do regularnego zastępowania statycznego komunikatu motd: md3v.com/create-a-linux-server-status-motd Myślę, że ten skrypt profilu wydaje się być lepszym sposobem, mniej ruchomych części.
CMCDragonkai
5
Umieszczenie danych wyjściowych jak MOTD w twoim profilu może zepsuć sftp.
Stuart P. Bentley,
5
Możesz umieścić motd.shskrypt w środku /etc/profile.d/z uprawnieniami 755. W ten sposób nie musisz dzwonić z tego /etc/profile.
Itay Grudev
8

Na serwerach Ubuntu znajduje się program o nazwie update-motdz pakietu libpam-modules:

Administratorzy systemu UNIX / Linux często przekazują ważne informacje konsolom i użytkownikom zdalnym, utrzymując tekst w pliku / etc / motd, który jest wyświetlany przez moduł pam_motd (8) na interaktywnych loginach powłoki.

Tradycyjnie plik ten jest tekstem statycznym, zwykle instalowanym przez dystrybucję i aktualizowanym tylko przy aktualizacjach wersji lub zastępowanym przez lokalnego administratora odpowiednimi informacjami.

Ubuntu wprowadziło framework update-motd, dzięki któremu motd (5) jest dynamicznie składany ze zbioru skryptów podczas logowania.

Ta kolekcja skryptów mieszka pod /etc/update-motd.d/. Aby uzyskać więcej informacji, zobacz tę stronę wiki .

Inną alternatywą dla generowania /etc/motdzamiast uruchamiania skryptu przy logowaniu jest posiadanie zadania cron. Z pewnością nie jest tak samo, ale czasami stosowałem to podejście w przeszłości. Zauważ jednak, że to podejście zostało również wykorzystane przez update-motd, ale zostało porzucone z powodu napotkanego problemu. Więcej informacji na ten temat można znaleźć tutaj .

Wtower
źródło
1
Powiązany post askubuntu . Siła z sudo run-parts /etc/update-motd.d/.
Pablo A,
1
To również minimalizuje opóźnienie przy logowaniu przy uruchamianiu, ponieważ nie musisz oceniać skryptu przy logowaniu (zakładając, że staje się on bardziej skomplikowany niż uptime).
ayman
0

W przypadku serwerów Centos 7 sugeruję użycie mojego portu update-motd.dz Ubuntu.

W przeciwieństwie do innych rozwiązań sprawia, że ​​dynamiczny MOTD pokazuje się tylko raz, gdy SSH / logujesz się przez konsolę (inne rozwiązania sprawiają, że pokazuje się, gdy otwierasz nowe screenokna, na przykład).

Zainstaluj z:

yum install https://github.com/gdubicki/centos-pam-with-update-motd/releases/download/1.1.8-1022.3/pam-1.1.8-1022.el7.x86_64.rpm

Używać z:

  1. Usuń domyślną wartość statyczną /etc/motd.
  2. Producent sshd nie pokazują statyczny motd z linii PrintMotd no, Banner none, UsePAM yes(ewentualnie PrintLastLog no) w /etc/ssh/sshd_config& Odśwież sshdusługi.
  3. Dodaj tę linię do /etc/pam.d/sshd: session optional pam_motd.so motd=/run/motd.dynamic.
  4. Dodaj swoje skrypty /etc/update-motd.d, jak na Ubuntu

Najnowsze informacje można znaleźć na stronie https://github.com/gdubicki/centos-pam-with-update-motd .

Greg Dubicki
źródło