Ciekawym sposobem na urozmaicenie i naszego serwera jest utworzenie własnego powitania. Co prawda jeżeli jesteśmy jedynymi jego użytkownikami, może to być zbyteczne, choć z drugiej możemy w ten sposób wygenerować sobie pełen status usług na naszym serwerze, jak liczba procesów, użytkowników czy temperatura dysku. Nawet jeśli nie jest nam to potrzebne, to dzięki napisaniu własnego powitania, możemy poznać kilka podstawowych poleceń i programów systemu linux.

Nasze powitanie może wyglądać na przykład w ten sposób:

Świetny opis konfiguracji jest dostępny w tym artykule:
CUSTOMIZE YOUR SHELL MOTD.
W zasadzie prawie cały mój ekran powitania jest stworzony w oparciu o ten artykuł. Dlaczego zatem piszę wpis, w którym podaję tylko link do innego artykułu? Bo problematyczne może być samo ustawienie na stałe takiego ekranu powitalnego. Niestety, artykuł ma już pewien wiek i niektóre rozwiązania zostały już zastąpione innymi.

Przy okazji, podaję swoją konfigurację, która na praktycznie na pewno zadziała na terminalu.

#!/usr/bin/env tclsh

# * Variables
set var(user) $env(USER)
set var(path) $env(PWD)
set var(home) $env(HOME)

# * Check if we're somewhere in /home
#if {![string match -nocase "/home*" $var(path)]} {
if {![string match -nocase "/home*" $var(path)] && ![string match -nocase "/usr/home*" $var(path)] } {
  return 0
}

# * Calculate last login
set lastlog [exec -- lastlog -u $var(user)]
set ll(1)  [lindex $lastlog 7]
set ll(2)  [lindex $lastlog 8]
set ll(3)  [lindex $lastlog 9]
set ll(4)  [lindex $lastlog 10]
set ll(5)  [lindex $lastlog 6]

# * Calculate current system uptime
set uptime    [exec -- /usr/bin/cut -d. -f1 /proc/uptime]
set up(days)  [expr {$uptime/60/60/24}]
set up(hours) [expr {$uptime/60/60%24}]
set up(mins)  [expr {$uptime/60%60}]
set up(secs)  [expr {$uptime%60}]

# * Calculate usage of home directory
set usage [lindex [exec -- /usr/bin/du -ms $var(home)] 0]

# * Calculate SSH logins:
set logins     [exec -- w -s]
set log(c)  [lindex $logins 3]

# * Calculate processes
set psu [lindex [exec -- ps U $var(user) h | wc -l] 0]
set psa [lindex [exec -- ps -A h | wc -l] 0]

# * Calculate current system load
set loadavg     [exec -- /bin/cat /proc/loadavg]
set sysload(1)  [lindex $loadavg 0]
set sysload(5)  [lindex $loadavg 1]
set sysload(15) [lindex $loadavg 2]

# * Calculate Memory
set memory  [exec -- free -m]
set mem(t)  [lindex $memory 7]
set mem(u)  [lindex $memory 8]
set mem(f)  [lindex $memory 9]
set mem(c)  [lindex $memory 16]
set mem(s)  [lindex $memory 19]

# * Calculate disk temperature from hddtemp
set hddtemp [exec nc localhost 7634 | cut -c "33-34"]

# * Calculate temperature from lm-sensors
set temperature    [exec -- sensors | grep temp]
set tem(0)  [lindex $temperature 1]

# * ascii head
set head {
{logo}
}

# * Print Results
puts "\\033\\[01;32m$head\\033\\[0m"
puts "  Ostatnie logowanie    : $ll(1) $ll(2) $ll(3) $ll(4) z $ll(5)"
puts "  Czas pracy serwera    : $up(days) dni $up(hours) godzin $up(mins) minut $up(secs) sekund"
puts "  Obciazenie systemu    : $sysload(1) (1min) $sysload(5) (5min) $sysload(15) (15min)"
puts "  Wykorzystanie pamieci : Uzywana: $mem(f)/$mem(t)MB Swap: $mem(s)MB"
puts "  Temperatura serwera   : System: $tem(0), Dysk: +$hddtemp\.0C"
puts "  Uzycie dysku          : Wykorzystujesz aktualnie ${usage}MB w $var(home)"
puts "  Sesje SSH             : Aktualnie mamy $log(c) zalogowanych uzytkownikow."
puts "  Procesy               : Masz uruchomionych ${psu} ze ${psa} w systemie"
puts " \\033\\[01;32m :::::::::::::::::::::::::::::::::-UWAGA-:::::::::::::::::::::::::::::::::"
puts "       Udostepnianie konta bez zgody administratora jest zabronione      \\033\\[0m\\n"

Do wygenerowania naszego napisu powitalnego, najlepiej użyć jakiegoś gotowego generatora napisów ASCII jak np. ten: ASCII Generator

Całość zapisujemy w pliku /etc/motd.tcl, zgodnie z tym, co jest napisane w przytoczonym artykule.
Nadajemy prawa do uruchamiania:

sudo chmod +x /etc/motd.tcl

oraz dopisujemy do pliku /etc/profile (na końcu) następującą linię:

/etc/motd.tcl

i czyścimy zawartość pliku /etc/motd.

Problem kasowania powitania po restarcie
Zapewne ktoś, kto wklepał to na sucho, zdziwi się, gdy zrestartuje swój serwer i nie zobaczy swojego powitania.
W tym celu musimy wyedytować plik /etc/init.d/bootlogs oraz zakomentować następujące linie:

	Update motd
	uname -snrvm > /var/run/motd
	[ -f /etc/motd.tail ] && cat /etc/motd.tail >> /var/run/motd

Prawdopodobnie będą one znajdować się gdzieś za rozpoczęciem funkcji do_start ()


Sources :