Mittwoch, 15. Juli 2009

1 1/2 Bashhacker: Array erzerugen mit sed

Dank einiger sehr netter Menschen des UB habe ich nun endlich auch das Problem gelöst, wie man ein Array erzeugen kann, wenn die Elemente durch ein : getrennt sind.
Und nicht nur das, ich habe sogar einen Weg gefunden, diesen ganzen Spaß in einem na sagen wir halbwegs sinnvollen Script zusammenzubauen.

Die Lösung ist nicht hundertprozentig bash, da sie das Werkzeug sed benutzt:

#!/bin/bash
#scanvirus
# a wrapper script that allows an easier use of clamscan
DIRS=

option_e() #e steht für excludedir
{
DIRS=$OPTARG
c=$( echo $DIRS | sed "s/:/\n/g") #extrahiert : und interpriert diesen als newline seperator
}

while getopts e: opt
do
case $opt in
a) option_e
;;
\?) echo "no option"
esac
done
shift `expr $OPTIND - 1`

exlude this()
{
for i in ${c[@]}
do
echo \
echo "--exclude-dir"=$i
done
}

#update der virendatenbank
wget -c --progress=dot:binary --directory-prefix=/var/lib/clamav/\n http://db.local.clamav.net/daily.cvd

E=$( exclude_this) #das erzeugt den neuen String, welcher --exclude-dir=DIR1 --exclude-dir=DIR2 enthält
clamscan -v -i -r $E / #aufruf von calmscan

exit 0



Ruft man nun das Script nun zum Beispiel mit scanvirus -e /home/:/media/ auf, wird folgendes ausgeführt nachdem die Virendatenbank aktualisiert wurde:

~> clamcan -v -i -r --exclude-dir=/home/ --exclude-dir=/media/ /

und man erspart sich das lästige exclude-dir getippe. Ist doch angenehm oder.

Keine Kommentare:

Kommentar veröffentlichen

Hinweis: Nur ein Mitglied dieses Blogs kann Kommentare posten.