15-09-2000, 09:20
Hallo,
zur Erstellung eines Shellscripts bräuchte ich Eure Hilfe (ich bin Anfänger):
1. ich möchte überprüfen, ob ein bestimmtes Verzeichnis leer ist, also ob keine Dateien enthalten sind und abhängig davon etwas unternehmen. Es muß egal sein, ob sonst eine oder mehrere Dateien enthalten sind.
2. das Ganze findet in einer Schleife "for i in * do ... done " statt, wobei dann, wenn obiges Verzeichnis nicht leer ist, nach der Abarbeitung von bestimmten Befehlen, mit dem nächsten Durchlauf der For-Schleife weitergemacht werden soll, ohne das die sonstigen Befehle berücksichtigt werden. Wie kann man das machen?
3. Wenn ich in eine Script folgendes mache:
cd /verzeichnis
for i in *
do
echo "ausgeführt" >/verzeichnis2/datei
done
dann werden bei mir zwei Einträge in /verzeichnis2/datei erzeugt. Es sieht so aus, als wenn . und .. berücksichtigt werden.
Wie kann ich dies verhindern?
4. in einer anderen Prüfung soll ein Verzeichnis nach bestimmten Dateitypen geprüft werden. Dabei soll festgestellt werden, ob Dateien mit ".exe" ".dll" ".ins" usw. vorhanden sind. Wenn ja sollen bestimmte Befehle abgearbeitet werden und die obige For-Schleife erneut durchlaufen werden,
wenn nein, soll normal weitergemacht werden.
Anbei, das Script, soweit ich momentan bin (ungetestet)
##########################################
#!/bin/bash
# Shell-sript zum automatischen Entpacken von Zip-Dateien
# Wechseln ins Einlauf-Verzeichnis
cd /ska_fs2/pool/skadaten/unzip/einlauf
# Suchen nach den ZIP-Dateien
# 3)
for i in *.zip
do
# Ausgabeverzeichnis erstellen
mkdir ../ausgabe/$i
# Zipdatei auf Viren Pruefen,
# verseuchte Dateien nach /root/infected kopieren
/usr/local/uvscan/uvscan $i -m /root/infected
# Bei Virenbefall Hinweisdatei in Ausgabeverzeichnis erstellen
# Mail versenden 1 + 2)
###### cp /root/batches/unzip/v_info.txt ../ausgabe/$i/v_info.txt.$i
###### mail -s "$i" mail@mail.de</root/batches/unzip/virus.txt
# Zipdatei in Arbeitsverzeichnis entpacken
/usr/bin/unzip $i -d /root/arbeit/$i
# Inhalt des Arbeitsverzeichnisse auf Viren pruefen
# verseuchte Dateien nach /root/infected kopieren
/usr/local/uvscan/uvscan /root/arbeit/$i -m /root/infected
# Bei Virenbefall Hinweisdatei in Ausgabeverzeichnis erstellen
# Mail versenden 1 + 2)
###### cp /root/batches/unzip/v_info1.txt ../ausgabe/$i/v_info.txt.$i
###### mail -s "$i" mail@mail.de</root/batches/unzip/virus.txt
# cd /root/arbeit/$i 4)
# Dateien auf Programme testen
# Dateien mit .exe, .dll, .ins usw
# Wenn Programm nur Datei mit Programmhinweis
# nach Ausgabeverzeichnis kopieren
# Inhalt des Arbeitsverzeichnisse nach Ausgabeverzeichnis verschieben
mv /root/arbeit/$i/*.* ../ausgabe/$i/
# Arbeitsverzeichnis loeschen
rm -r /root/arbeit/$i
# Orginalzip loeschen
rm $i
done
############################################
Könnt Ihr mir helfen?
MfG,
Werner
zur Erstellung eines Shellscripts bräuchte ich Eure Hilfe (ich bin Anfänger):
1. ich möchte überprüfen, ob ein bestimmtes Verzeichnis leer ist, also ob keine Dateien enthalten sind und abhängig davon etwas unternehmen. Es muß egal sein, ob sonst eine oder mehrere Dateien enthalten sind.
2. das Ganze findet in einer Schleife "for i in * do ... done " statt, wobei dann, wenn obiges Verzeichnis nicht leer ist, nach der Abarbeitung von bestimmten Befehlen, mit dem nächsten Durchlauf der For-Schleife weitergemacht werden soll, ohne das die sonstigen Befehle berücksichtigt werden. Wie kann man das machen?
3. Wenn ich in eine Script folgendes mache:
cd /verzeichnis
for i in *
do
echo "ausgeführt" >/verzeichnis2/datei
done
dann werden bei mir zwei Einträge in /verzeichnis2/datei erzeugt. Es sieht so aus, als wenn . und .. berücksichtigt werden.
Wie kann ich dies verhindern?
4. in einer anderen Prüfung soll ein Verzeichnis nach bestimmten Dateitypen geprüft werden. Dabei soll festgestellt werden, ob Dateien mit ".exe" ".dll" ".ins" usw. vorhanden sind. Wenn ja sollen bestimmte Befehle abgearbeitet werden und die obige For-Schleife erneut durchlaufen werden,
wenn nein, soll normal weitergemacht werden.
Anbei, das Script, soweit ich momentan bin (ungetestet)
##########################################
#!/bin/bash
# Shell-sript zum automatischen Entpacken von Zip-Dateien
# Wechseln ins Einlauf-Verzeichnis
cd /ska_fs2/pool/skadaten/unzip/einlauf
# Suchen nach den ZIP-Dateien
# 3)
for i in *.zip
do
# Ausgabeverzeichnis erstellen
mkdir ../ausgabe/$i
# Zipdatei auf Viren Pruefen,
# verseuchte Dateien nach /root/infected kopieren
/usr/local/uvscan/uvscan $i -m /root/infected
# Bei Virenbefall Hinweisdatei in Ausgabeverzeichnis erstellen
# Mail versenden 1 + 2)
###### cp /root/batches/unzip/v_info.txt ../ausgabe/$i/v_info.txt.$i
###### mail -s "$i" mail@mail.de</root/batches/unzip/virus.txt
# Zipdatei in Arbeitsverzeichnis entpacken
/usr/bin/unzip $i -d /root/arbeit/$i
# Inhalt des Arbeitsverzeichnisse auf Viren pruefen
# verseuchte Dateien nach /root/infected kopieren
/usr/local/uvscan/uvscan /root/arbeit/$i -m /root/infected
# Bei Virenbefall Hinweisdatei in Ausgabeverzeichnis erstellen
# Mail versenden 1 + 2)
###### cp /root/batches/unzip/v_info1.txt ../ausgabe/$i/v_info.txt.$i
###### mail -s "$i" mail@mail.de</root/batches/unzip/virus.txt
# cd /root/arbeit/$i 4)
# Dateien auf Programme testen
# Dateien mit .exe, .dll, .ins usw
# Wenn Programm nur Datei mit Programmhinweis
# nach Ausgabeverzeichnis kopieren
# Inhalt des Arbeitsverzeichnisse nach Ausgabeverzeichnis verschieben
mv /root/arbeit/$i/*.* ../ausgabe/$i/
# Arbeitsverzeichnis loeschen
rm -r /root/arbeit/$i
# Orginalzip loeschen
rm $i
done
############################################
Könnt Ihr mir helfen?
MfG,
Werner