SSH-Login-Nachricht aufpeppen

Status
Für weitere Antworten geschlossen.

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
5.541
Punkte für Reaktionen
1.385
Punkte
234
CPU Temperatur(en):
Rich (BBCode):
/sys/devices/platform/coretemp.0/temp?_input
Das funktioniert auf einem Intelsystem (z.B. DS216+) einwandfrei.

Weißt du auch wo diese Infos bei einer DS118 (Realtek RTD1296) liegen?
In /sys/devices/platform finde ich nichts, was nur annähernd passen würde.
 

PsychoHH

Benutzer
Mitglied seit
03. Jul 2013
Beiträge
2.967
Punkte für Reaktionen
4
Punkte
78
Habe mir mal ähnliche Infos als Funktion definiert, welche ich per alias nutzen kann.
Würde noch per who die aktuell angemeldeten Benutzer auflisten, sowie die MAC Adresse.


Theoretisch könnte man dann so auch direkt schnell per Terminal weitere Infos nachladen.
Praktisch ob und Ordner gemountet sind, getrennt werden sollen usw.

Geht dann ja auch ziemlich easy per y/n Auswahl.
 

BigRonin

Benutzer
Mitglied seit
08. Mai 2015
Beiträge
1.156
Punkte für Reaktionen
130
Punkte
89
Weißt du auch wo diese Infos bei einer DS118 (Realtek RTD1296) liegen?
In /sys/devices/platform finde ich nichts, was nur annähernd passen würde.

... leider nicht ... würde mich aber ebenfalls interessieren. Könnte das für mein AvrLogger-Programm gebrauchen.

Was liefert denn:
Rich (BBCode):
find -name temp?_input
im Verzeichnis "sys" ?
 

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
5.541
Punkte für Reaktionen
1.385
Punkte
234
Was liefert denn:
Rich (BBCode):
find -name temp?_input
im Verzeichnis "sys" ?
Das Gerät ist gerade wieder unterwegs und in ein paar Tagen wieder hier. Dann probiere ich das sofort aus.
 

DrDeath

Benutzer
Mitglied seit
31. Aug 2018
Beiträge
189
Punkte für Reaktionen
71
Punkte
34
Hi, bei einer DS218+ sieht das wie folgt aus:

Rich (BBCode):
root@DiskStation:~# cd /sys/
root@DiskStation:/sys# find -name temp?_input
./devices/platform/coretemp.0/hwmon/hwmon0/temp4_input
./devices/platform/coretemp.0/hwmon/hwmon0/temp1_input
./devices/platform/coretemp.0/hwmon/hwmon0/temp2_input


Demnach sollte die CPU Temperatur so zu berechnen sein:

Rich (BBCode):
# CPU Temperaturen
cnt=0; TEMP=0
for FILE in `ls /sys/devices/platform/coretemp.0/hwmon/hwmon0/temp?_input`; do
TEMP=$[TEMP + $(cat "${FILE}")]
cnt=$[cnt+1]
done
TEMP=$[TEMP/cnt/1000]


Damit die HDD Temperaturen auch für "nicht Admins" angezeigt werden können, hab ich mir eine SNMP Walk zum Auslesen geborgt:
Rich (BBCode):
sdatemp=$(snmpwalk -v 2c  -c syno -O qv 127.0.0.1 1.3.6.1.4.1.6574.2.1.1.6.0)
sdbtemp=$(snmpwalk -v 2c  -c syno -O qv 127.0.0.1 1.3.6.1.4.1.6574.2.1.1.6.1)


Das Endprodukt für eine DS218+ mit 2 Festplatten sieht dann so aus: (als .bashrc im home Verzeichnis abgelegt)

Rich (BBCode):
#!/bin/sh
# dynamische MOTD
# Aufruf in .bashrc

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

# Hostname
HOSTNAME=`hostname -f`

# 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

# CPU Temperaturen
cnt=0; TEMP=0
for FILE in `ls /sys/devices/platform/coretemp.0/hwmon/hwmon0/temp?_input`; do
    TEMP=$[TEMP + $(cat "${FILE}")]
    cnt=$[cnt+1]
done
TEMP=$[TEMP/cnt/1000]

# HDD Temperaturen
#sdatemp=$(smartctl -d ata -a /dev/sda | grep "194 Temperature" | cut -c 129-130)
#sdbtemp=$(smartctl -d ata -a /dev/sdb | grep "194 Temperature" | cut -c 129-130)
sdatemp=$(snmpwalk -v 2c  -c syno -O qv 127.0.0.1 1.3.6.1.4.1.6574.2.1.1.6.0)
sdbtemp=$(snmpwalk -v 2c  -c syno -O qv 127.0.0.1 1.3.6.1.4.1.6574.2.1.1.6.1)


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

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

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

# Ausgabe
echo -e "\033[0;37m
\033[0;37m  ~~~~~~~~~~~~
\033[0;37m |           \033[32m-\033[0;37m|  Datum.........: \033[1;32m\033[1;36m$DATUM\033[0;37m
\033[0;37m |           \033[32m-\033[0;37m|  Hostname......: \033[1;33m$HOSTNAME\033[0;37m
\033[0;37m |           \033[32m-\033[0;37m|  Uptime........: $UP1 Tage, $UP2:$UP3 Stunden
\033[0;37m |           \033[32m-\033[0;37m|  Ø Auslastung..: $LOAD1 (1 Min.) | $LOAD2 (5 Min.) | $LOAD3 (15 Min.)
\033[0;37m |            |  Temperaturen..: CPU: $TEMP °C | HDD1: $sdatemp °C | HDD2: $sdbtemp °C
\033[0;37m |         \033[34m[]\033[0;37m |  Speicher......: Gesamt: $DISK1 | Belegt: $DISK2 | Frei: $DISK3
\033[0;37m |         \033[0;32m(c)\033[0;37m|  RAM...........: Gesamt: $RAM1 | Belegt: $RAM2 | Frei: $RAM3 | Cache: $RAM4
\033[0;37m |         \033[34m(\033[31m'\033[34m)\033[0;37m|  Swap..........: Gesamt: $RAM5 | Belegt: $RAM6 | Frei: $RAM7
\033[0;37m | DS218+     |  IP-Adressen...: LAN: \033[1;35m$IP_LAN\033[0;37m | WiFi: \033[1;35m$IP_WLAN\033[0;37m
\033[0;37m  ~~~~~~~~~~~~
\033[m"



Ausgabe:


Rich (BBCode):
  ~~~~~~~~~~~~
 |           -|  Datum.........: Fri, 31. August 2018
 |           -|  Hostname......: DiskStation
 |           -|  Uptime........: 5 Tage, 1:52 Stunden
 |           -|  Ø Auslastung..: 0.00 (1 Min.) | 0.01 (5 Min.) | 0.01 (15 Min.)
 |            |  Temperaturen..: CPU: 36 °C | HDD1: 29 °C | HDD2: 32 °C
 |         [] |  Speicher......: Gesamt: 3.5T | Belegt: 568G | Frei: 3.0T
 |         (c)|  RAM...........: Gesamt: 3.7G | Belegt: 346M | Frei: 1.1G | Cache: 2.2G
 |         (')|  Swap..........: Gesamt: 4.2G | Belegt: 0B | Frei: 4.2G
 | DS218+     |  IP-Adressen...: LAN: 192.168.1.10 | WiFi: ---
  ~~~~~~~~~~~~
 
Zuletzt bearbeitet:

BigRonin

Benutzer
Mitglied seit
08. Mai 2015
Beiträge
1.156
Punkte für Reaktionen
130
Punkte
89
hm ... interessant ... die DS218+ hat auch eine Intel CPU.

Auf alle Fälle danke für das Feedback !

Hab den Teil mal universeller gemacht:
Rich (BBCode):
# CPU Temperaturen
cd "/sys/devices/platform"
input=($(find -name temp?_input))
for (( m=0; m<${#input[@]}; m++ )); do
    TEMP=$[TEMP + $(cat "${input[m]}")]
done
TEMP=$[TEMP/1000/m]

Nachtrag:

Der "cd" Befehl nach dem "done" macht eventuel Probleme wenn das "Home"-Verzeichnis nicht gesetzt ist ... und das scheint der Fall zu sein wenn ein Script "nicht" über die Shell gestartet wird.

Also bitte vorsichtig testen ...
 
Zuletzt bearbeitet:

DrDeath

Benutzer
Mitglied seit
31. Aug 2018
Beiträge
189
Punkte für Reaktionen
71
Punkte
34
Ohne den "cd" Befehl könnte man dem "find" auch die Start Parameter übergeben:

Rich (BBCode):
find /sys/devices/platform -name temp?_input

Rich (BBCode):
# CPU Temperaturen
input=($(find /sys/devices/platform -name temp?_input))
for (( m=0; m<${#input[@]}; m++ )); do
    TEMP=$[TEMP + $(cat "${input[m]}")]
done
TEMP=$[TEMP/1000/m]
 
Zuletzt bearbeitet:

BigRonin

Benutzer
Mitglied seit
08. Mai 2015
Beiträge
1.156
Punkte für Reaktionen
130
Punkte
89
Cool ... wieder was dazugelernt :cool:
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat