You are here: start » technik:start » technik:bash

Table of Contents

Bash-Programmierung

Wiederkehrende Code-Fragmente zum sammeln und aufkleben.

Übergabe von Kommandozeilenparametern

usage=$(basename $0)" [options]: check disk partitions for Space, Inodes, Filesystem- and S.M.A.R.T-state\n
    -l: write to log\n
    -m: send mail if partition status not ok\n
    -s: silent (suppress output on screen)
    -h: this help"
# evaluate command line parameters

options=$(getopt hlms $*)
if [ $? -ne 0 ] ; then
        echo -e $usage
        exit 20
fi

set -- ${options}

while [ $1 != "--" ] ; do
        if [ $1 = '-h' ] ; then
                echo -e $usage
                exit 4
        elif [ $1 = '-l' ] ; then
                DO_LOG=1
        elif [ $1 = '-m' ] ; then
                DO_MAIL=1
        elif [ $1 = '-s' ] ; then
                DO_SUPPRESS=1
        else
                echo -e $usage
                exit 22
        fi
        shift
done
shift

oder zum verarbeiten von gleichwertigen Argumenten:

for X in $*; do
    test -f $X && echo "$X: Datei"
    test -d $X && echo "$X: Verzeichnis"
done

Mails versenden

cat $DUMPFILE |mail -s "$MAIL_SUBJECT" $MAIL_TO -a "From: skript@$MACHINE"

if-then-else-fi und Vergleichsoperationen

if [ "$DO_MAIL" = "1" -a "$PALARM" = "1" ] ; then sendMail ; fi

for-do

for PARTITION in $ALLPARTITIONS; do
  ((i++))

   echo "$TIMESTAMP "hdstatus "$MACHINE":"${PARTITION[$i]}" UsedSpace:"${USEDSPACE[$i]}" UsedInod
es:"${USEDINODES[$i]}" Filesystem:"${FILESYSTEMSTATE[$i]}" Harddisk:"${SMARTSTATE[$i]}" >> $LOGFILE

done

Stringoperationen mit awk und grep

ALLPARTITIONS=$(df -l --type=ext3|grep /dev/|awk '{print $1}')
FILESYSTEMSTATE[$i]=$($TUNE2FS -l $PARTITION|grep state|awk '{print $3}')