[CentOS-de] Bash-Frage

Wolfgang centos at arcor.de
Di Jan 31 13:58:42 EST 2012


Gelöst.?

Ein Bash-Guru werde ich wahrscheinlich nie, aber ich will nicht immer
Windows sehen.

Für Kritik mit Vorschlägen bin ich immer zu haben. :-)

Ok; schön ist das Skript nicht, aber es läuft erstmal.
Evtl. kann ein Guru mal zeigen, wie sauber man Skripte schreiben
kann/sollte.


Danke an alle die mir Gedankenanstösse gegeben haben.


Wolfgang


datei: temp1.sh (paste & copy)

#!/bin/bash

# 31.01.2012

# Sinn dieser Bash:
# Ein SEHR SEHR SEHR einfacher Temp-Überblick

# Wie überall:
# Verwendung auf eigene Gefahr!!!

# CentOS 5.7
# 2.6.18-274.12.1.el5 #1 SMP Tue Nov 29 13:37:46 EST 2011 x86_64 x86_64
x86_64 GNU/Linux
# sensors
# k10temp-pci-00c3
# Adapter: PCI adapter
# temp1:       +38°C


MAIL_Empaenger=root at local # <- hier die gewünschte Email-Adresse
Monitor_DB_Path=/var/Monitor/rrd
DB_Name=`basename "$0" .sh`.rrd
Grafik_Path=/var/www/html/Monitor
Grafik_Name=`basename "$0" .sh`.png

if [ -f /usr/bin/rrdtool ]; then

[ -d $Monitor_DB_Path ] || mkdir -p $Monitor_DB_Path
[ -d $Grafik_Path ] || mkdir $Grafik_Path

if [ ! -f $Monitor_DB_Path/$DB_Name ]; then
/usr/bin/rrdtool create $Monitor_DB_Path/$DB_Name --step 300 \
DS:TEMP_CPU:GAUGE:600:U:U \
DS:TEMP_SDC:GAUGE:600:U:U \
DS:TEMP_SDD:GAUGE:600:U:U \
RRA:AVERAGE:0.5:1:2160 \
RRA:AVERAGE:0.5:5:2016 \
RRA:AVERAGE:0.5:15:2880 \
RRA:AVERAGE:0.5:60:8760
fi


# Autom. Installation.
[ -f $Monitor_DB_Path/`basename "$0"` ] \
|| mv `basename "$0"` $Monitor_DB_Path/`basename "$0"`
crontab -l | grep `basename "$0"` || \
echo "*/5 * * * * $Monitor_DB_Path`basename "$0"`"
>>/var/spool/cron/root


if [ -x /usr/bin/sensors ]; then
TTT=$(sensors)

#echo -e "\nLänge des Array = ${#TTT[0]} Zeichen"
#echo -e "\nEin Stück aus dem Array ausschneiden = ${TTT[@]:52:2}"

TEMP_CPU=$((${TTT[@]:52:2}))
# eine andere Möglichkeit
#TEMP_CPU=$(sensors | tr '\n' ' ' | cut -d'+' -f2 | cut -d'°' -f1)
else
 logger "/usr/bin/sensors NICHT GEFUNDEN"
 #Nachinstallation von lm_sensors
 yum -y install lm_sensors && sensors
fi



if [ -x /usr/bin/hddtemp ]; then
 TEMP_SDC=$(hddtemp -n /dev/sdc)
 # Schummelzeile1 ... wenn beide Werte identisch sind = ist nur der
 # letzte grafische Eintrag zu sehen
 [ $TEMP_CPU -eq $TEMP_SDC ] && TEMP_SDC=$(($TEMP_SDC - 1))

 TEMP_SDD=$(hddtemp -n /dev/sdd)
 # Schummelzeile2
 [ $TEMP_SDC -eq $TEMP_SDD ] && TEMP_SDD=$(($TEMP_SDD - 1))
 # Schummelzeile3
 [ $TEMP_CPU -eq $TEMP_SDD ] && TEMP_SDD=$(($TEMP_SDD - 1))
else
 logger "/usr/bin/hddtemp NICHT GEFUNDEN"
 TEMP_SDC=1
 TEMP_SDD=1
 #Nachinstallation von hddtemp
 yum -y install hddtemp || logger "Konnte hddtemp nicht installieren"
fi

#echo -e "\n################\n$TEMP_CPU:$TEMP_SDC:$TEMP_SDD\n#######\n"

/usr/bin/rrdtool update $Monitor_DB_Path/$DB_Name \
N:$TEMP_CPU:$TEMP_SDC:$TEMP_SDD

nice -n 19 rrdtool graph $Grafik_Path/$Grafik_Name -a PNG \
-t "Temperatur in °C $HOSTNAME" \
-v "`date +%d.%m.%Y-%H:%M`" \
--zoom 2 \
DEF:TEMP_CPU=$Monitor_DB_Path/$DB_Name:TEMP_CPU:AVERAGE \
DEF:TEMP_SDC=$Monitor_DB_Path/$DB_Name:TEMP_SDC:AVERAGE \
DEF:TEMP_SDD=$Monitor_DB_Path/$DB_Name:TEMP_SDD:AVERAGE \
LINE1:TEMP_CPU#FF0000:"CPU = $TEMP_CPU" \
LINE1:TEMP_SDC#00FF00:"SDC = $TEMP_SDC" \
LINE1:TEMP_SDD#0000FF:"SDD = $TEMP_SDD"  > /dev/null

[ $TEMP_CPU -gt 45 ] && echo "Die CPU-Temp. beträgt $TEMP_CPU °C" | \
mail -s "$HOSTNAME" $MAIL_Empaenger

else

logger "rrdtool NOT FOUND"
#Autom. Installation von rrdtool
yum -y install rrdtool || logger "Konnte rrdtool nicht installieren"
fi