[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