Posts tagged dynamisch

SSH – Dynamisches MOTD

Die MOTD ist eine gute Möglichkeit um Nachrichten an die Benutzer eine System zu übermitteln, aber es hat auch seine Grenzen.Wenn ich mich auf meinem System einlogge will ich sehen wie es ihm so geht. Diese dynamische Informationen werden bei jedem Login generiert.
Hierfür habe ich mir ein kleines Shell Script gebastelt und verwende es statt der motd.

Als erstes stellen wir uns mal ein Shell Script

sudo nano /usr/local/bin/motddyn

mit dem Inhalt.

#!/bin/bash
let upSeconds="$(/usr/bin/cut -d. -f1 /proc/uptime)"
let secs=$((${upSeconds}%60))
let mins=$((${upSeconds}/60%60))
let hours=$((${upSeconds}/3600%24))
let days=$((${upSeconds}/86400))
UPTIME=`printf "%d days, %02dh %02dm %02ds" "$days" "$hours" "$mins" "$secs"`

# get the load averages
read one five fifteen rest < /proc/loadavg

echo "$(tput setaf 2)
   .~~.   .~~.    `date +"%A, %e %B %Y, %R"`
  '. \ ' ' / .'   `uname -srmo`$(tput setaf 1)
   .~ .~~~..~.
  : .~.'~'.~. :   Uptime.......: ${UPTIME}
 ~ (   ) (   ) ~  Memory.......: `cat /proc/meminfo | grep MemFree | awk {'print $2'}`kB (Free) / `cat /proc/meminfo | grep MemTotal | awk {'print $2'}`kB (Total)
( : '~'.~.'~' : ) Load Averages: ${one}, ${five}, ${fifteen} (1, 5, 15 min)
 ~ .~ (   ) ~. ~  Processes....: `ps ax | wc -l | tr -d ' '`
  (  : '~' :  )   IP Addresses.: `/sbin/ifconfig eth0 | /bin/grep 'inet addr' | /usr/bin/cut -d ':' -f 2 | /usr/bin/cut -d ' ' -f 1` and external `wget -q -O - http://icanhazip.com/ | tail`
   '~ .~~~. ~'    Temperature..: `/opt/vc/bin/vcgencmd measure_temp | cut -c "6-9"` °C
       '~'        SSH Logins...: `who -q | tail -n 1 | cut -d= -f2` user(s) (`who -q | head -n 1`) logged in.
                  Username.....: `whoami` from `who am i | awk '{ print substr($0, index($0,$5)) }' | sed 's/[()]//g'`
                  Last login...: `lastlog -u $USER | tail -n 1 | tr -s ' ' | cut -d ' ' -f 4-9` from `lastlog -u $USER | tail -n 1 | tr -s ' ' | cut -d ' ' -f 3`
                  Disk usage...: `/usr/bin/du -ms $HOME | /usr/bin/cut -f 1` MB in `/usr/bin/du -ms $HOME | /usr/bin/cut -f 2`
$(tput sgr0)"

Anschließend nano mit dem Tastenkürzel “STRG + X” für Windows oder “CTRL + X” für Mac beenden und ein “y” für yes, damit das bisherige Skript überschrieben werden kann.
Nun machen wir es noch ausführbar:

chmod +x /usr/local/bin/motddyn

Starten wir das Skript mal und schauen uns an ob die Ausgabe stimmt.

/usr/local/bin/motddyn
   .~~.   .~~.    Tuesday, 27 August 2013, 20:28
  '. \ ' ' / .'   Linux 3.6.11+ armv6l GNU/Linux
   .~ .~~~..~.
  : .~.'~'.~. :   Uptime.......: 24 days, 20h 07m 06s
 ~ (   ) (   ) ~  Memory.......: 37312kB (Free) / 448776kB (Total)
( : '~'.~.'~' : ) Load Averages: 0.19, 0.11, 0.08 (1, 5, 15 min)
 ~ .~ (   ) ~. ~  Processes....: 89
  (  : '~' :  )   IP Addresses.: xxx.xxx.xxx.xxx and external xxx.xxx.xxx.xxx
   '~ .~~~. ~'    Temperature..: 50.8 °C
       '~'        SSH Logins...: 2 user(s) (user pi) logged in.
                  Username.....: pi from xxx.xxx.xxx.xxx
                  Last login...: Tue Aug 27 14:28:26 +0200 2013 from xxx.xxx.xxx.xxx
                  Disk usage...: 26 MB in /home/pi

So weit so gut. Sieht doch schon mal ganz gut aus. Nun bauen wir es noch so ein, damit es bei jedem login automatisch gestartet wird.
Hierfür muß die Datei /etc/profile bearbeitet werden.

sudo nano /etc/profile

An das Ende der Datei gehen und folgende Zeile einfügen.

/usr/local/bin/motddyn

Anschließend nano mit dem Tastenkürzel “STRG + X” für Windows oder “CTRL + X” für Mac beenden und ein “y” für yes, damit das bisherige Skript überschrieben werden kann.

Lasst die aktuelle Verbindung offen und öffnet eine neue SSH Session, loggt euch ein und schaut euch das Ergebnis an.

Wer den MOTD Teil unter /etc/motd nicht mehr benötigt, kann die Datei ja wieder sauber machen oder motd kompplett abschalten.
Hierfür die SSH config öffnen

sudo nano /etc/ssh/sshd_config

und den PrintMotd Teil suchen und mit einem no versehen:

PrintMotd no

Anschließend nano mit dem Tastenkürzel “STRG + X” für Windows oder “CTRL + X” für Mac beenden und ein “y” für yes, damit das bisherige Skript überschrieben werden kann.

Danach noch den SSH Server neu starten.

sudo /etc/init.d/ssh restart

Mit SSH neu verbinden und das Ergebnis bewundern.

 

Wer es einfacher möchte, kann das screenfetch verwenden.