22-09-2000, 08:41
Hi,
untenstehend mein Shellscript, das automatisch ZIP-Dateien entpackt. Es wird auf Viren gecheckt und auf Dateien, die typischerweise in Programmen enthalten sind, da meine Netzwerkbenutzer keine Viren oder Programme einschleppen sollen.
Es in diesem noch ein Fehler, den ich noch nicht gefunden habe oder sonst etwas vergessen worden?
MfG,
Wernr
<pre>
#!/bin/bash
# Shell-sript zum automatischen Entpacken von Zip-Dateien
# Wechseln ins Einlauf-Verzeichnis
# Verzeichnis aus dem Datei geholt wird
INDIR="/ska_fs2/pool/skadaten/unzip/in/"
# Verzeichnis wo Datei abgelegt wird
OUTDIR="/ska_fs2/pool/skadaten/unzip/out/"
# Verzeichnis wo Dateien abgelegt werden, wenn Virus entdeckt wird
INFECT="/root/batches/unzip/ska_fs2/pool/skadaten/unzip/in/"
# HOME Directory
INFECTROOT="/root/batches/unzip"
# Ablage f. virenverseuchte Zips
VIRUS="/root/virus/"
# HOME Directory
ROOTDIR="/root/batches/unzip/"
# Arbeitsverzeichnis f. Zipper
ARBEIT="/root/batches/unzip/arbeit/"
# Ablageverzeichnis f. Zips mit Programmen
ABLAGE="/root/batches/unzip/ablage/"
# Umleitung der Fehlerausgabe in zentrale Datei
exec >>${ROOTDIR}unzip.log 2>&1
# Suchen nach den ZIP-Dateien
cd ${INDIR}
# for i in *.zip
for i in $(ls)
do
# Ausgabeverzeichnis erstellen
cd ${INDIR}
echo "Schleife $i"
mkdir ${OUTDIR}$i
# verschieben der Datei in ein Arbeitsverzeichnis auf dem Linux-Server
# da sonst event. der Virenscanner auf dem Novellserver in den Ablauf
# durch loeschen eingreift
rm -r ${ARBEIT}*
cp $i ${ARBEIT}$i
rm ${INDIR}$i
# Zipdatei auf Viren Pruefen,
# verseuchte Dateien nach /root/d verschieben
# /usr/local/uvscan/uvscan ${ARBEIT}$i -m ${INFECTROOT} --unzip -r --noexpire --analyse
/usr/local/uvscan/uvscan ${ARBEIT}$i --unzip -r --noexpire --analyse >${ROOTDIR}viruswarnung
# folgendes prueft, ob im benanten Verzeichnis Dateien
# vorhanden sind,
# wenn Dateien vorhanden sind wird die Schleife ausgefuehrt
# wc -w zaehlt die Vorkommen
if [ $? -eq 13 ] ;
then
# Bei Virenbefall Hinweisdatei in Ausgabeverzeichnis erstellen
cp ${ROOTDIR}virushinweis ${OUTDIR}/$i/virushinweis
# Dateien im Virenpruefverzeichnis loeschen
# Orginalzip in Virusverzeichnis verschieben und in in $INDIR loeschen
cp -r -f ${ARBEIT}$i ${VIRUS}
rm ${ARBEIT}$i
mail -s "Virus in $i gefunden " v-virus.sys@domaene.de<${ROOTDIR}viruswarnung
else
# Zipdatei in Arbeitsverzeichnis entpacken
/usr/bin/unzip ${ARBEIT}$i -d ${ARBEIT}$i.dir
# Dateien auf Programme testen
# Dateien mit .exe, .dll, .ins usw
# GROSS- und klein-Schreibung beachten, da unter LINUX relevant
# Wenn Programm nur Datei mit Programmhinweis
# nach Ausgabeverzeichnis kopieren
cd ${ARBEIT}$i.dir
# auch in Untervezeichnissen nach Dateien suchen und
# in Datei ausgeben
ls -R > ${ARBEIT}datei.gefunden
# die Liste nach Mustern durchsuchen und die gefunden Stellen zaehlen
DATANZAHL=$(cat ${ARBEIT}datei.gefunden |grep -f ${ROOTDIR}dateiliste|wc -w)
if [ $DATANZAHL -ne 0 ] # Programminhalte gefunden
then
cp ${ROOTDIR}programmhinweis ${OUTDIR}/$i/programmhinweis
rm ${ARBEIT}datei.gefunden
mkdir ${ABLAGE}$i
cp -r -f ${ARBEIT}$i ${ABLAGE}$i/
rm -r ${ARBEIT}*
mail -s "Programm in $i gefunden " w.ginzky@domaene.de<${ROOTDIR}programm
else
# kein Virus und keine Progamminhalte gefunden
# Dateien werden dem Benutzer zur Verfuegung gestellt
/usr/bin/unzip ${ARBEIT}$i -d ${OUTDIR}$i
cd ${ROOTDIR}
rm -r ${ARBEIT}*
mail -s "Zip wurde entpackt" w.ginzky@domaene.de<${ROOTDIR}program.txt
fi
fi
done # Ende for-schleife
exit 0
</pre>
untenstehend mein Shellscript, das automatisch ZIP-Dateien entpackt. Es wird auf Viren gecheckt und auf Dateien, die typischerweise in Programmen enthalten sind, da meine Netzwerkbenutzer keine Viren oder Programme einschleppen sollen.
Es in diesem noch ein Fehler, den ich noch nicht gefunden habe oder sonst etwas vergessen worden?
MfG,
Wernr
<pre>
#!/bin/bash
# Shell-sript zum automatischen Entpacken von Zip-Dateien
# Wechseln ins Einlauf-Verzeichnis
# Verzeichnis aus dem Datei geholt wird
INDIR="/ska_fs2/pool/skadaten/unzip/in/"
# Verzeichnis wo Datei abgelegt wird
OUTDIR="/ska_fs2/pool/skadaten/unzip/out/"
# Verzeichnis wo Dateien abgelegt werden, wenn Virus entdeckt wird
INFECT="/root/batches/unzip/ska_fs2/pool/skadaten/unzip/in/"
# HOME Directory
INFECTROOT="/root/batches/unzip"
# Ablage f. virenverseuchte Zips
VIRUS="/root/virus/"
# HOME Directory
ROOTDIR="/root/batches/unzip/"
# Arbeitsverzeichnis f. Zipper
ARBEIT="/root/batches/unzip/arbeit/"
# Ablageverzeichnis f. Zips mit Programmen
ABLAGE="/root/batches/unzip/ablage/"
# Umleitung der Fehlerausgabe in zentrale Datei
exec >>${ROOTDIR}unzip.log 2>&1
# Suchen nach den ZIP-Dateien
cd ${INDIR}
# for i in *.zip
for i in $(ls)
do
# Ausgabeverzeichnis erstellen
cd ${INDIR}
echo "Schleife $i"
mkdir ${OUTDIR}$i
# verschieben der Datei in ein Arbeitsverzeichnis auf dem Linux-Server
# da sonst event. der Virenscanner auf dem Novellserver in den Ablauf
# durch loeschen eingreift
rm -r ${ARBEIT}*
cp $i ${ARBEIT}$i
rm ${INDIR}$i
# Zipdatei auf Viren Pruefen,
# verseuchte Dateien nach /root/d verschieben
# /usr/local/uvscan/uvscan ${ARBEIT}$i -m ${INFECTROOT} --unzip -r --noexpire --analyse
/usr/local/uvscan/uvscan ${ARBEIT}$i --unzip -r --noexpire --analyse >${ROOTDIR}viruswarnung
# folgendes prueft, ob im benanten Verzeichnis Dateien
# vorhanden sind,
# wenn Dateien vorhanden sind wird die Schleife ausgefuehrt
# wc -w zaehlt die Vorkommen
if [ $? -eq 13 ] ;
then
# Bei Virenbefall Hinweisdatei in Ausgabeverzeichnis erstellen
cp ${ROOTDIR}virushinweis ${OUTDIR}/$i/virushinweis
# Dateien im Virenpruefverzeichnis loeschen
# Orginalzip in Virusverzeichnis verschieben und in in $INDIR loeschen
cp -r -f ${ARBEIT}$i ${VIRUS}
rm ${ARBEIT}$i
mail -s "Virus in $i gefunden " v-virus.sys@domaene.de<${ROOTDIR}viruswarnung
else
# Zipdatei in Arbeitsverzeichnis entpacken
/usr/bin/unzip ${ARBEIT}$i -d ${ARBEIT}$i.dir
# Dateien auf Programme testen
# Dateien mit .exe, .dll, .ins usw
# GROSS- und klein-Schreibung beachten, da unter LINUX relevant
# Wenn Programm nur Datei mit Programmhinweis
# nach Ausgabeverzeichnis kopieren
cd ${ARBEIT}$i.dir
# auch in Untervezeichnissen nach Dateien suchen und
# in Datei ausgeben
ls -R > ${ARBEIT}datei.gefunden
# die Liste nach Mustern durchsuchen und die gefunden Stellen zaehlen
DATANZAHL=$(cat ${ARBEIT}datei.gefunden |grep -f ${ROOTDIR}dateiliste|wc -w)
if [ $DATANZAHL -ne 0 ] # Programminhalte gefunden
then
cp ${ROOTDIR}programmhinweis ${OUTDIR}/$i/programmhinweis
rm ${ARBEIT}datei.gefunden
mkdir ${ABLAGE}$i
cp -r -f ${ARBEIT}$i ${ABLAGE}$i/
rm -r ${ARBEIT}*
mail -s "Programm in $i gefunden " w.ginzky@domaene.de<${ROOTDIR}programm
else
# kein Virus und keine Progamminhalte gefunden
# Dateien werden dem Benutzer zur Verfuegung gestellt
/usr/bin/unzip ${ARBEIT}$i -d ${OUTDIR}$i
cd ${ROOTDIR}
rm -r ${ARBEIT}*
mail -s "Zip wurde entpackt" w.ginzky@domaene.de<${ROOTDIR}program.txt
fi
fi
done # Ende for-schleife
exit 0
</pre>