Raspberry Pi: SSH-Login-Nachricht anpassen (MOTD)

Loggt man sich per SSH auf einem Raspberry Pi ein, bekommt man immer dieselbe Nachricht angezeigt: Viel Text, wenig Information und auch nicht besonders schön. Es handelt sich dabei um die „Mitteilung des Tages“ (Message of the day = MOTD). Um diesen Text zu entfernen ist garnicht viel Aufwand nötig, denn er wird als reiner Text in der Datei /etc/motd gespeichert. Also brauchen wir ihn nur aus der entsprechenden Datei entfernen.

Raspberry Pi: Standard-Login-Nachricht

Raspberry Pi: Standard-Login-Nachricht

MOTD Teil 1

Dazu verbinden wir uns per SSH auf den Raspberry Pi und setzen folgenden Befehl ab:

$ sudo nano /etc/motd

Zusehen bekommen wir auch direkt die Login-Nachricht:

Raspberry Pi: Inhalt von /etc/motd

Raspberry Pi: Inhalt von /etc/motd

Die löschen wir einfach oder schreiben beliebigen Text hinein, speichern die Änderungen, trennen die Verbindung und loggen uns neu ein. Schon werden wir ganz ohne, oder mit unserer eigenen Nachricht begrüßt.

Raspberry Pi: Login ohne MOTD

Raspberry Pi: Login ohne MOTD

MOTD Teil 2

Was bleibt sind zwei Zeilen, die bei Bedarf ebenfalls noch ausgeschaltet werden können. Zeile 1 Linux raspberrypi 4.1.13+ #826 PREEMPT... wird in der Datei /etc/init.d/motd erzeugt. Um das zu verhindern, laden wir die Datei im Editor …

$ sudo nano /etc/init.d/motd

… und kommentieren Zeile 21 aus:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          motd
# Required-Start:    hostname $local_fs
# Required-Stop:
# Should-Start:
# Default-Start:     1 2 3 4 5
# Default-Stop:
# Short-Description: Create dynamic part of /etc/motd
# Description:       /etc/motd is user-editable and static.  This script
#                    creates the initial dynamic part, by default the
#                    output of uname, and stores it in /var/run/motd.dynamic.
#                    Both parts are output by pam_motd.
### END INIT INFO

PATH=/sbin:/usr/sbin:/bin:/usr/bin
. /lib/init/vars.sh

do_start () {
        # Update motd
        #uname -snrvm > /var/run/motd.dynamic
}

do_status () {
        if [ -f /var/run/motd.dynamic ] ; then
                return 0
        else
                return 4
        fi
}

case "$1" in
  start|"")
        do_start
        ;;
  restart|reload|force-reload)
        echo "Error: argument '$1' not supported" >&2
        exit 3
        ;;
  stop)
        # No-op
        ;;
  status)
        do_status
        exit $?
        ;;
  *)
        echo "Usage: motd [start|stop|status]" >&2
        exit 3
        ;;
esac

:

SSH-Nachrichten

Die zweite Zeile der Login-Nachricht wird vom SSH-Daemon erzeugt und lässt sich in dessen Einstellungsdatei abschalten.

$ sudo nano /etc/ssh/sshd_config

Hier suchen wir den Eintrag PrintLastLog yes und ändern ihn zu PrintLastLog no.

...
# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog no
CPKeepAlive yes
#UseLogin no

#MaxStartups 10:30:60
#Banner /etc/issue.net
...

Während sich das Verändern von MOTD sofort auswirkt, werden die letzten beiden Änderungen erst nach einem Neustart aktiv. Mit diesen Einstellungen erhält man nach dem Login nur noch den Prompt, ohne jeglichen weiteren Text.

Grafische Gestaltung

Beispiel 1: Himbeere

Wenn es dann doch etwas mehr sein darf, dann geht auch noch etwas mehr, als statischer Text. An verschiedenen Stellen im Internet wird beschrieben, wie man sich seine eigene Mitteilung des Tages, nebst dynamischen Informationen zum Systemzustand, erstellen kann. Dabei ist vieles möglich: farbige Schrift, Datum/Uhrzeit, Uptime, CPU-Temperatur, IP-Adressen, … Daraus habe ich mir mal etwas zusammengebastelt, und für die bessere Darstellung mein Terminal auf schwarz umgestellt.

Raspberry Pi: farbige Login-Nachricht mit dem aktuellen Systemzustand

Raspberry Pi: farbige Login-Nachricht mit dem aktuellen Systemzustand

Auch das ist kein großes Ding: Quellcode des nachfolgenden Scripts hernehmen, beliebig anpassen, und irgendwo auf dem Raspberry Pi abspeichern. Bei mir liegt die Datei unter /home/pi/welcome.sh.

#!/bin/sh
# dynamische MOTD
# Aufruf in /etc/profile (letzte Zeile)

# Datum & Uhrzeit
DATUM=`date +"%A, %e %B %Y"`

# Hostname
HOSTNAME=`hostname -f`

# letzter Login
LAST1=`last -2 -a | awk 'NR==2{print $3}'`	# Wochentag
LAST2=`last -2 -a | awk 'NR==2{print $5}'`	# Tag
LAST3=`last -2 -a | awk 'NR==2{print $4}'`	# Monat
LAST4=`last -2 -a | awk 'NR==2{print $6}'`	# Uhrzeit
LAST5=`last -2 -a | awk 'NR==2{print $10}'`	# Remote-Computer

# Uptime
UP0=`cut -d. -f1 /proc/uptime`
UP1=$(($UP0/86400))		# Tage
UP2=$(($UP0/3600%24))		# Stunden
UP3=$(($UP0/60%60))		# Minuten
UP4=$(($UP0%60))		# Sekunden

# Durchschnittliche Auslasung
LOAD1=`cat /proc/loadavg | awk '{print $1}'`	# Letzte Minute
LOAD2=`cat /proc/loadavg | awk '{print $2}'`	# Letzte 5 Minuten
LOAD3=`cat /proc/loadavg | awk '{print $3}'`	# Letzte 15 Minuten

# Temperatur
TEMP=`vcgencmd measure_temp | cut -c "6-9"`

# Speicherbelegung
DISK1=`df -h | grep 'dev/root' | awk '{print $2}'`	# Gesamtspeicher
DISK2=`df -h | grep 'dev/root' | awk '{print $3}'`	# Belegt
DISK3=`df -h | grep 'dev/root' | awk '{print $4}'`	# Frei

# Arbeitsspeicher
RAM1=`free -h -o | grep 'Mem' | awk '{print $2}'`	# Total
RAM2=`free -h -o | grep 'Mem' | awk '{print $3}'`	# Used
RAM3=`free -h -o | grep 'Mem' | awk '{print $4}'`	# Free
RAM4=`free -h -o | grep 'Swap' | awk '{print $3}'`	# Swap used

# IP-Adressen ermitteln
if ( ifconfig | grep -q "eth0" ) ; then IP_LAN=`ifconfig eth0 | grep "inet Adresse" | cut -d ":" -f 2 | cut -d " " -f 1` ; else IP_LAN="---" ; fi ;
if ( ifconfig | grep -q "wlan0" ) ; then IP_WLAN=`ifconfig wlan0 | grep "inet Adresse" | cut -d ":" -f 2 | cut -d " " -f 1` ; else IP_WLAN="---" ; fi ;

echo "\033[1;32m   .~~.   .~~.    \033[1;36m$DATUM
\033[1;32m  '. \ ' ' / .'   
\033[1;31m   .~ .~~~..~.    \033[0;37mHostname......: \033[1;33m$HOSTNAME
\033[1;31m  : .~.'~'.~. :   \033[0;37mLetzter Login.: $LAST1, $LAST2 $LAST3 $LAST4 von $LAST5
\033[1;31m ~ (   ) (   ) ~  \033[0;37mUptime........: $UP1 Tage, $UP2:$UP3 Stunden
\033[1;31m( : '~'.~.'~' : ) \033[0;37mØ Auslastung..: $LOAD1 (1 Min.) | $LOAD2 (5 Min.) | $LOAD3 (15 Min.)
\033[1;31m ~ .~ (   ) ~. ~  \033[0;37mTemperatur....: $TEMP °C
\033[1;31m  (  : '~' :  )   \033[0;37mSpeicher......: Gesamt: $DISK1 | Belegt: $DISK2 | Frei: $DISK3
\033[1;31m   '~ .~~~. ~'    \033[0;37mRAM (MB)......: Gesamt: $RAM1 | Belegt: $RAM2 | Frei: $RAM3 | Swap: $RAM4
\033[1;31m       '~'        \033[0;37mIP-Adressen...: LAN: \033[1;35m$IP_LAN\033[0;37m | WiFi: \033[1;35m$IP_WLAN
\033[m"

Anschließend muss das Script nur noch ausführbar gemacht und automatisch bei jedem Login ausgeführt werden. Dazu setzen wir folgenden Befehl ab…

$ sudo chmod 777 /home/pi/welcome.sh

…bearbeiten die Datei /etc/profile und fügen am Ende den Script-Aufruf an:

$ sudo nano /etc/profile

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/us$
fi
export PATH

if [ "$PS1" ]; then
  if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
    # The file bash.bashrc already sets the default PS1.
    # PS1='\h:\w\$ '
    if [ -f /etc/bash.bashrc ]; then
      . /etc/bash.bashrc
    fi
  else
    if [ "`id -u`" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

# The default umask is now handled by pam_umask.
# See pam_umask(8) and /etc/login.defs.

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi
/home/pi/welcome.sh

Bei jedem Login wird nun das Script ausgeführt und dessen Ausgabe direkt vorm Prompt angezeigt.

Beispiel 2: Lautsprecher

Weiteres Beispiel gefällig? Das verwende ich bei meinen WLAN-Lautsprechern.

Raspberry Pi: farbige Login-Nachricht mit dem aktuellen Systemzustand

Raspberry Pi: farbige Login-Nachricht mit dem aktuellen Systemzustand

#!/bin/sh
# dynamische MOTD
# Aufruf in /etc/profile (letzte Zeile)

# Datum & Uhrzeit
DATUM=`date +"%A, %e %B %Y"`

# Hostname
HOSTNAME=`hostname -f`

# letzter Login
LAST1=`last -2 -a | awk 'NR==2{print $3}'`	# Wochentag
LAST2=`last -2 -a | awk 'NR==2{print $5}'`	# Tag
LAST3=`last -2 -a | awk 'NR==2{print $4}'`	# Monat
LAST4=`last -2 -a | awk 'NR==2{print $6}'`	# Uhrzeit
LAST5=`last -2 -a | awk 'NR==2{print $10}'`	# Remote-Computer

# Uptime
UP0=`cut -d. -f1 /proc/uptime`
UP1=$(($UP0/86400))		# Tage
UP2=$(($UP0/3600%24))		# Stunden
UP3=$(($UP0/60%60))		# Minuten
UP4=$(($UP0%60))		# Sekunden

# Durchschnittliche Auslasung
LOAD1=`cat /proc/loadavg | awk '{print $1}'`	# Letzte Minute
LOAD2=`cat /proc/loadavg | awk '{print $2}'`	# Letzte 5 Minuten
LOAD3=`cat /proc/loadavg | awk '{print $3}'`	# Letzte 15 Minuten

# Temperatur
TEMP=`vcgencmd measure_temp | cut -c "6-9"`

# Speicherbelegung
DISK1=`df -h | grep 'dev/root' | awk '{print $2}'`	# Gesamtspeicher
DISK2=`df -h | grep 'dev/root' | awk '{print $3}'`	# Belegt
DISK3=`df -h | grep 'dev/root' | awk '{print $4}'`	# Frei

# Arbeitsspeicher
RAM1=`free -h -o | grep 'Mem' | awk '{print $2}'`	# Total
RAM2=`free -h -o | grep 'Mem' | awk '{print $3}'`	# Used
RAM3=`free -h -o | grep 'Mem' | awk '{print $4}'`	# Free
RAM4=`free -h -o | grep 'Swap' | awk '{print $3}'`	# Swap used

# IP-Adressen ermitteln
if ( ifconfig | grep -q "eth0" ) ; then IP_LAN=`ifconfig eth0 | grep "inet Adresse" | cut -d ":" -f 2 | cut -d " " -f 1` ; else IP_LAN="---" ; fi ;
if ( ifconfig | grep -q "wlan0" ) ; then IP_WLAN=`ifconfig wlan0 | grep "inet Adresse" | cut -d ":" -f 2 | cut -d " " -f 1` ; else IP_WLAN="---" ; fi ;

echo "\033[38;5;166m                     @@@.
\033[38;5;166m                     '@@@@.     \033[1;36m$DATUM\033[m
\033[38;5;166m           .@@         @@@@.
\033[38;5;166m         .@@@@   @@@.   @@@@.   \033[0;37mHostname.: \033[1;33m$HOSTNAME\033[m
\033[38;5;166m      .@@@@@@@   @@@@.   @@@@.  \033[0;37mL. Login.: $LAST1, $LAST2 $LAST3 $LAST4 von $LAST5
\033[38;5;166m@@@@@@@@@@@@@@    @@@@   '@@@@  \033[0;37mUptime...: $UP1 Tage, $UP2:$UP3 Stunden
\033[38;5;166m@@@@@@@@@@@@@@     @@@:   @@@@.
\033[38;5;166m@@@@@@@@@@@@@@     @@@@   @@@@: \033[0;37mØ-Ausl...: $LOAD1 (1m) | $LOAD2 (5m) | $LOAD3 (15m)
\033[38;5;166m@@@@@@@@@@@@@@     @@@:   @@@@' \033[0;37mTemp.....: $TEMP °C
\033[38;5;166m@@@@@@@@@@@@@@    @@@@   .@@@@  \033[0;37mSpeicher.: Gesamt: $DISK1 | Belegt: $DISK2 | Frei: $DISK3
\033[38;5;166m      '@@@@@@@   @@@@'   @@@@'  \033[0;37mRAM (MB).: Gesamt: $RAM1 | Belegt: $RAM2 | Frei: $RAM3
\033[38;5;166m         '@@@@   @@@'   @@@@'
\033[38;5;166m           '@@         @@@@'    \033[0;37mIP-Adr...: LAN:  \033[1;35m$IP_LAN\033[m
\033[38;5;166m                     ,@@@@'     \033[0;37m           WiFi: \033[1;35m$IP_WLAN\033[m
\033[38;5;166m                     @@@'
\033[m"

Beispiel 3: FHEM

Und noch ein Beispiel:

Raspberry Pi: farbige Login-Nachricht mit dem aktuellen Systemzustand

Raspberry Pi: farbige Login-Nachricht mit dem aktuellen Systemzustand

#!/bin/sh
# dynamische MOTD
# Aufruf in /etc/profile (letzte Zeile)

# Datum & Uhrzeit
DATUM=`date +"%A, %e %B %Y"`

# Hostname
HOSTNAME=`hostname -f`

# letzter Login
LAST1=`last -2 -a | awk 'NR==2{print $3}'`	# Wochentag
LAST2=`last -2 -a | awk 'NR==2{print $5}'`	# Tag
LAST3=`last -2 -a | awk 'NR==2{print $4}'`	# Monat
LAST4=`last -2 -a | awk 'NR==2{print $6}'`	# Uhrzeit
LAST5=`last -2 -a | awk 'NR==2{print $10}'`	# Remote-Computer

# Uptime
UP0=`cut -d. -f1 /proc/uptime`
UP1=$(($UP0/86400))		# Tage
UP2=$(($UP0/3600%24))		# Stunden
UP3=$(($UP0/60%60))		# Minuten
UP4=$(($UP0%60))		# Sekunden

# Durchschnittliche Auslasung
LOAD1=`cat /proc/loadavg | awk '{print $1}'`	# Letzte Minute
LOAD2=`cat /proc/loadavg | awk '{print $2}'`	# Letzte 5 Minuten
LOAD3=`cat /proc/loadavg | awk '{print $3}'`	# Letzte 15 Minuten

# Temperatur
TEMP=`vcgencmd measure_temp | cut -c "6-9"`

# Speicherbelegung
DISK1=`df -h | grep 'dev/root' | awk '{print $2}'`	# Gesamtspeicher
DISK2=`df -h | grep 'dev/root' | awk '{print $3}'`	# Belegt
DISK3=`df -h | grep 'dev/root' | awk '{print $4}'`	# Frei

# Arbeitsspeicher
RAM1=`free -h -o | grep 'Mem' | awk '{print $2}'`	# Total
RAM2=`free -h -o | grep 'Mem' | awk '{print $3}'`	# Used
RAM3=`free -h -o | grep 'Mem' | awk '{print $4}'`	# Free
RAM4=`free -h -o | grep 'Swap' | awk '{print $3}'`	# Swap used

# IP-Adressen ermitteln
if ( ifconfig | grep -q "eth0" ) ; then IP_LAN=`ifconfig eth0 | grep "inet Adresse" | cut -d ":" -f 2 | cut -d " " -f 1` ; else IP_LAN="---" ; fi ;
if ( ifconfig | grep -q "wlan0" ) ; then IP_WLAN=`ifconfig wlan0 | grep "inet Adresse" | cut -d ":" -f 2 | cut -d " " -f 1` ; else IP_WLAN="---" ; fi ;

echo "
\033[0;33m            .@.             \033[1;36m$DATUM\033[m
\033[0;33m         .:@\033[0;32m@@@\033[0;33m@:.
\033[0;33m      .:@\033[0;32m@'     '@\033[0;33m@:.       \033[0;37mHostname.: \033[1;33m$HOSTNAME\033[m
\033[0;33m  .::@\033[0;32m@'           '@\033[0;33m@::.   \033[0;37mL. Login.: $LAST1, $LAST2 $LAST3 $LAST4 von $LAST5
\033[0;33m.:@\033[0;32m@'                 '@\033[0;33m@:. \033[0;37mUptime...: $UP1 Tage, $UP2:$UP3 Stunden
\033[0;33m  @\033[0;32m@    .:@:' ':@:.    @\033[0;33m@
\033[0;33m  @\033[0;32m@                   @\033[0;33m@   \033[0;37mØ-Ausl...: $LOAD1 (1m) | $LOAD2 (5m) | $LOAD3 (15m)
\033[0;33m  @\033[0;32m@   .           .   @\033[0;33m@   \033[0;37mTemp.....: $TEMP °C
\033[0;33m  @\033[0;32m@   '@         @'   @\033[0;33m@   \033[0;37mSpeicher.: Gesamt: $DISK1 | Belegt: $DISK2 | Frei: $DISK3
\033[0;33m  @\033[0;32m@    '@@:,,,:@@'    @\033[0;33m@   \033[0;37mRAM (MB).: Gesamt: $RAM1 | Belegt: $RAM2 | Frei: $RAM3
\033[0;33m  @\033[0;32m@                   @\033[0;33m@
\033[0;33m  @\033[0;32m@@@@@@@@@@@@@@@@@@@@@\033[0;33m@   \033[0;37mIP-Adr...: LAN:  \033[1;35m$IP_LAN\033[m
\033[0;33m  '''''''''''''''''''''''
\033[m"

Synology

Im Synology-Forum gibt es mittlerweile einen Thread mit Anpassungen für die Synology DiskStation.

Nützliche Links

Eine Webseite, die die Formatierungsmöglichkeiten von bash ziemlich gut beschreibt:

Diskussionen und nette Beispiele sind hier zu finden:

An manchen Stellen wird beschrieben, wie der Text mittels Cron in die Datei /etc/motd geschrieben werden kann. Was jedoch meist unerwähnt bleibt ist, dass es sich dabei um eine reine Text-Datei handelt, die die Sonderzeichen zur Formatierung und farbigen Hervorhebung dann eben auch als Text ausgibt, was meiner Meinung nach etwas unschön aussieht.

ASCII-Art-Webseiten

ASCII-Converter

Sebastian

...ist staatlich geprüfter Techniker für Elektrotechnik, Schwerpunkt Prozessautomatisierung und Energietechnik. Die Themen Automatisierung und Programmierung haben es ihm besonders angetan.
Außerdem ist er für jede technische Spielerei zu haben 😉
Sebastian

17 Comments

  1. Avatar
    Antworten Knut

    Hallo Sebastina,

    nettes HOWTO! Finde ich echt gut! Danke dafür!

    Ich habe leider ein kleines Problem.
    Er mir nicht die IP und die Temperatur an. Dazu gibt er mir noch das aus:
    /home/Knut/Skripts/welcome.sh: 36: /home/Knut/Skripts/welcome.sh: ifconfig: not found
    Ich fahre ein abgespeckte Raspbian (Minibian) auf meinem PI.
    Ich habe die welcome.sh erstellt. Sie hat die Rechte 731 und gehört root.
    Hast du vielleicht eine Idee?

    Beste Grüße
    Knut

    • Sebastian
      Antworten Sebastian

      Hallo Knut,

      meines Wissens nach ist ifconfig kein Bestandteil von Minibian. Du könntest das mit dem Befehl ip addr show lösen, der hier im Prinzip das gleiche macht. Eventuell musst du dann die cut-Befehle etwas anpassen.
      Oder Du installierst die Wireless Tools: $ sudo apt-get install wireless-tools. Dann sollte der Befehl zur Verfügung stehen.

      Gruß,
      Sebastian

  2. Avatar
    Antworten Knut

    Hallo Sebastian,

    danke für deine Antwort. Ich habe gerade mal das Skript von Hand ausgeführt, nach dem der PI komplett hochgefahren ist. Nun wird alles richtig angezeigt und nichts fehlt. Hängt es vielleicht damit zusammen wann das Skript ausgeführt wird?

    Beste Grüße
    Knut

    • Sebastian
      Antworten Sebastian

      Das Script wird in dem Moment ausgeführt, in dem Du Dich anmeldest. Es kann also theoretisch nicht daran liegen, dass irgendwelche Bibliotheken noch nicht geladen sind.
      Ich würde mal die Rechte prüfen, denn Du meldest Dich ja nicht als root an. Meine welcome.sh gehört pi und besitzt die Rechte 755.

  3. Avatar
    Antworten Knut

    Die Rechte waren schon auf 755, mein Fehler.
    Wie kann das Skript dann aber ifconfig ausführen ohne root rechte?
    Wenn ich das Skript wieder dem Benutzer „Knut“ zuschreibe, brauche ich sudo, sonst zeigt er mir keine IP an.

    • Sebastian
      Antworten Sebastian

      ifconfig benötigt normalerweise keine erweiterten Rechte. Schau doch mal, ob Du $ /sbin/ifconfig ausführen kannst. Vielleicht fehlt /sbin nur in Deiner Pfadvariable. Wenn dem so ist, hast Du zwei Möglichkeiten: /sbin zur Pfadvariablen hinzufügen oder das Script um die Pfadangabe erweitern.
      Sollte ifconfig bei Dir nicht im Verzeichnis /sbinzu finden sein, kannst Du mit $ whereis ifconfig herausfinden, wo es sich befindet.

  4. Avatar
    Antworten Knut

    Danke Sebastian, genau das war`s! 🙂
    Ich habe im Skript den vollen Pfad /sbin/ifconig angeben und schon funktioniert`s.

    Mein zweites Problem, dass nicht die Temp. angezeigt wurd, habe ich jetzt auch gelöst.
    Dazu waren anfangs auch nur root Rechte nötig. Jetzt geht es auch ohne.
    Ich musste die Rechte von /dev/vchiq per chmod von 660 auf 666 setzen.

    Zu dem habe ich dein Skript noch um eine Zeile erweitert; mit der Uhrzeitangabe.
    ZEIT=`date +%H:%M:%S`
    Und die Zeitvariable $ZEIThabe ich unten vor das Datum gesetzt.

    Beste Grüße & Danke, für deine Hilfe!

  5. Avatar
    Antworten Manfred

    Falls vorsorglich ein anderer Benutzer als pi verwendet wird (z.B. USERXY in der Gruppe sudo !!), treten ggf. folgende Probleme auch bei Euch auf:
    1.) welcome.sh Script funktioniert nicht „Keine Berechtigung“
    ABHILFE das Script ausführbar machen mit:
    sudo +x /home/USERXY/welcome.sh
    2.) statt einer Zahl bei der Temperatur in Grad Celsius steht init
    ABHILFE:
    sudo usermod -aG video USERXY
    sudo reboot

    vgl.: https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=34076
    ACHTUNG: bei -aG ist das a sehr wichtig sonst ist der USERXY nicht mehr in der sudo Gruppe und das System gegebenenfalls Adminlos….
    3.) ASCII Bilder gleich mit ausgeben lassen
    nicht vergessen auf das Maskieren „Escapen“ bestimmter Zeichen z.B. `

    Nützlich bzgl. Farben: http://misc.flogisoft.com/bash/tip_colors_and_formatting

    System: Raspberry Pi 3 mit Aktualisierungen bis 2016-10-30

    @Sebastian: Tolle Seite!!! – Danke

    • Avatar
      Antworten hannes

      Hello,

      danke für das Tut.

      Habe aktuell dieses Problem:

      login as: pi
      pi@**password:
      Last login: Wed Jul 12 10:33:18 2017 from *.*.com
      -bash: /home/pi/welcome.sh: Permission denied

      Wie bekomm ich die MOTD nun korrekt angezeigt?

      Danke und Grüße

  6. Avatar
    Antworten cellemochum

    Toller Artikel! Leider funktioniert nicht alles wie beschrieben. Zum Beispiel existiert /etc/init.d/motd nicht. Die Parameter bei der grafischen Himbeere sind leider ebenso fehlerhaft (letzte beiden Zeilen). Im Einsatz: Raspbian Lite 4.14

    • Avatar
      Antworten Peter

      Meinst du die Ermittlung der IP-Adresse(n)?

      Habe dies so gelöst (Zeilen 44-46) unter Linux raspi 4.14.62-v7+

      # IP-Adressen ermitteln
      IP_LAN=$(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1) ;
      IP_WLAN=$(/sbin/ip -o -4 addr list wlan0 | awk '{print $4}' | cut -d/ -f1) ;
      
    • Avatar
      Antworten Peter

      Meinst du das Ermitteln der IP-Adresse(n)?

      Ich habe die so gelöst unter Linux raspi 4.14.62-v7+

      # IP-Adressen ermitteln
      IP_LAN=$(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1) ;
      IP_WLAN=$(/sbin/ip -o -4 addr list wlan0 | awk '{print $4}' | cut -d/ -f1) ;
      
  7. Avatar
    Antworten Bernd

    Die grafische Ausgabe, sprich die Umsetzung der Farbcodes, funktioniert bei mir nicht.
    Ich habe das Script unverändert ausgeführt:

    root@PiHole:~# bash test_motd.sh
    \033[1;32m   .~~.   .~~.    \033[1;36mSonntag, 19 August 2018
    \033[1;32m  '. \ ' ' / .'
    \033[1;31m   .~ .~~~..~.    \033[0;37mHostname......: \033[1;33mPiHole
    \033[1;31m  : .~.'~'.~. :   \033[0;37mLetzter Login.: Sun, 19 Aug 11:52 von 044__pc3
    \033[1;31m ~ (   ) (   ) ~  \033[0;37mUptime........: 7 Tage, 0:20 Stunden
    \033[1;31m( : '~'.~.'~' : ) \033[0;37mØ Auslastung..: 0.03 (1 Min.) | 0.03 (5 Min.) | 0.00 (15 Min.)
    \033[1;31m ~ .~ (   ) ~. ~  \033[0;37mTemperatur....: 41.9 °C
    \033[1;31m  (  : '~' :  )   \033[0;37mSpeicher......: Gesamt: 15G | Belegt: 2,7G | Frei: 12G
    \033[1;31m   '~ .~~~. ~'    \033[0;37mRAM (MB)......: Gesamt: 923M | Belegt: 823M | Frei: 99M | Swap: 0B
    \033[1;31m       '~'        \033[0;37mIP-Adressen...: LAN: \033[1;35m192.168.0.4\033[0;37m | WiFi: \033[1;35m
    \033[m
    root@PiHole:~#
    
      • Avatar
        Antworten Tobi

        Hallo. Erstmal tolle Anleitung von dir. Habe nur folgendes Problem:Wenn ich die Schritte genau so mache wie hier beschrieben bekomme ich beim ssh Aufruf folgende Meldung :/home/pi/welcome.sh: 12: /home/pi/welcome.sh: -2: not found
        awk: cannot open -2 (No such file or directory)
        /home/pi/welcome.sh: 4: /home/pi/welcome.sh: Syntax error: end of file unexpected (expecting „fi“)

        Kannst du mir hier helfen?

  8. Avatar
    Antworten varo.biker

    Hi Sebastian,

    deine Anleitung hat mir echt geholfen. So als Newbi hat man seine Probleme. Auch ich hatte die Probleme mit der IP-Adresse wie Peter und seine Problemlösung war auch meine.

    Ich habe aber noch ein anderes Problem gehabt., Und zwar bekam ich immer Fehlermeldungen bei der Auswertung des Arbeitsspeichers. Nachdem ich die Codezeile so:

    # Arbeitsspeicher
    RAM1=`free -h –giga | grep ‚Mem‘ | awk ‚{print $2}’` # Total
    RAM2=`free -h –giga | grep ‚Mem‘ | awk ‚{print $3}’` # Used
    RAM3=`free -h –giga | grep ‚Mem‘ | awk ‚{print $4}’` # Free
    RAM4=`free -h –giga | grep ‚Swap’| awk ‚{print $3}’` # Swap used

    angepasst hatte, waren die Fehlermeldungen verschwunden.

    Was ich nicht weg bekomme ist das :

    Linux raspberrypi 4.1.13+ #826 PREEMPT…

    Bei mir gibt es nur eine kmotd und der Code sieht ganz anders aus. Vielleicht hast du da noch einen Tipp für mich.

    Beste Grüße

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.