PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Autoamtischer Filetransfer via Script



loerdy
27-02-2002, 16:50
Guten Tag,

ich bin nun wahrlich kein Shell Profi, aber hin und wieder wäre es ganz nützlich ...

Ich habe einen Virenscanner unter Linux laufen, der sich leider nicht
selbständig updaten kann. Die Updates muss ich immer selber per hand
in ein bestimmtest Verzeichnis kopieren, den Dienst einmal beenden und dann neustarten. Nun möchte ich das ganze automatisieren, den Ablauf
stelle ich mir so vor:

Auf einem NT Server existiert eine freigabe names "Antivir" und der
Benutzer antivir dort lege ich die aktuellen Pattern ab.

Das Script soll nun folgendes tun:

Schritt 1:

mounten der Freigabe ( das kriege ich hin )

Schritt 2:

Vergleichen, ob die Patterndatei, die in der Freigabe bereits
auf dem Linuxrechner existiert, oder nicht, bzw ob die Datei auf
dem NT Server aktueller ist.

Schritt 3:

entweder:

Ist die Datei nicht neuer, soll das Verzeichnis wieder unmountet werden
und mir eine Mail geschickt werden, das die Definitionen auf dem neuesten
Stand sind --> Fertig.

oder:

Die Datei auf dem Server ist neuer, und es wird zunächst
der Mailscan Dienst beendet, die alte Datei in ein Backup Verzeichnis verschoben und die neue Datei in das Verzeichnis kopiert.
Anschliessend der Dienst neu gestartet, und dann eine Mail an mich gesendet das das Update erfolgreichgewesen ist.

Das kann eigentlich nicht so schwer sein, aber ich hab da keinen Schimmer von ..

Wäre sehr nett wenn mir da jemand helfen könnte ...

es dankt, der Loerdy

mightymike99
28-02-2002, 00:22
Zu Schritt 2:

mach einfach einen "ls -l" auf die Datei und filtere z. B. die Groesse der datei raus


SIZE_NEW=$(ls -l /the/new/file/pattern.txt | awk '{print $5}' )
SIZE_OLD=$(ls -l /the/old/file/pattern.txt | awk '{print $5}' )


Zu Schritt 3:


if [ $SIZE_NEW -ne $SIZE_OLD ]
then mail -s "Virensignaturen sind nicht aktuell" faxmail09@gmx.net<<ENDE_MAIL
leerer Inhalt
ENDE_MAIL
umount /irgendwas
else
./beende_mailscan
...
...
fi
Informationen zum Shellscripten findest du bei www.linuxfibel.de/bashprog.htm

Gruß
Tobias

loerdy
28-02-2002, 08:37
Danke, das werde ich mal versuchen...

gibt es auch die Möglichkeit über den Dateinamen und nicht nach der Grösse zu gehen?
Die Pattern werden immer aufsteigend benannt:

lpt$vpn.229
lpt$vpn.230
lpt$vpn.231
lpt$vpn.232

usw...

Nun wäre es doch irgenwie sinnvoll zu fragen, wenn wert nach dem Punkt grösser als , dann bitte tauschen oder so??

Vielen Dank, Loerdy

mightymike99
28-02-2002, 17:08
Ja sicher geht das. Nimm einfach den Dateinamen und schneide die Zahl aus.



NEW_NR=$(basename(ls /die/neue/lpt\$vpn*) | cut -c9-11 )

Das $-Zeichen ist ein Sonderzeichen und muss deshalt mit dem \ - Zeichen "geschuetzt" werden.

"basename" trennt denn Pfadnamen vom Dateinamen ab.

Gruß
Tobias