Tag Archive 'Script'

Mrz 14 2008

Profile Image of Torsten Feld
Torsten Feld

[Tutorial] Batchscripting unter Windows

Filed under Tutorials

Da ich grade dieses Thema auch im Rahmen des Unterrichts in der Technikerschule vorgestellt habe, möchte ich dieses auch noch mal bloggen.

Allgemeines

Batch bedeutet so viel wie "Stapel". Das heißt, dass die Befehle innerhalb des Batchscripts gestapelt werden. Dabei ist darauf zu achten, dass jeder Befehl in einer eigenen Zeile steht. Ausnahmen hierbei sind z.B. if-Anweisungen oder for-Schleifen. Befehle innerhalb der Batchdatei werden grundsätzlich nacheinander und nicht zeitgleich ausgeführt, so dass er nächste Befehle erst ausgeführt wird, wenn der Aktuelle abgeschlossen ist.

Mit Hilfe von "help" können sämtliche Befehle in der Konsole aufgelistet werden.

Im Gegensatz zu Linux oder Unix sind die CMD-Befehle und Variablen innerhalb der Scripte nicht Case-sensitiv. Das bedeutet, dass die Befehle und Variablen sowohl mit Groß- und Kleinbuchstaben geschrieben werden können. Der Variablenname "meinName" ist somit gleichbedeutend mit "Meinname". Ausnahme hierbei sind Zählvariablen, wie sie z.B. in Schleifen verwendet werden. %a% und %A% sind somit unterschiedlich.

Ausgaben

Um die Ausgaben der Befehle (z.B. die Verzeichnisstruktur, welche mittels "dir" ausgegeben wird) in Dateien oder Drucker umzuleiten, hat man die Möglichkeit Ausgabe- bzw. Umleitungsoperatoren zu verwenden.

  • "Befehl > Dateiname.txt"
    leitet die Ausgabe, welche vom Befehl erzeugt wird in die Datei "Dateiname.txt" um. Ist die Datei noch nicht vorhanden, wird sie erstellt; ist sie bereits vorhanden, wird sie überschrieben.
  • "Befehl >> Dateiname.txt"
    funktioniert ähnlich wie die Umleitung mit ">", hängt die Ausgabe jedoch an die Datei "Dateiname.txt" an, ohne sie zu überschreiben.
  • "Befehl < Dateiname.txt"
    hier werden die Inhalte der Datei "Dateiname.txt" als Parameter an den Befehl übergeben und somit verarbeitet.
  • "Befehl1 | Befehl2"
    die Ausgabe von "Befehl1" wird als Parameter an "Befehl2" übergeben, so dass dort mit den Ergebnissen von "Befehl1" weitergearbeitet werden kann.

Verknüpfungen

Verknüpfungen werden dazu benutzt, um Befehle in Abhängigkeit zur erfolgreichen Ausführung des vorangegangenen Befehls auszuführen.

  • A & B
    beide Anweisungen werden auf jeden Fall ausgeführt, egal ob "A" ausgeführt wurde oder nicht.
  • A && B
    B wird nur ausgeführt, wenn A keinen Fehler geworfen hat
    (Bsp.: Wenn A ein Befehl zur Sicherung von Dateien ist und B dazu dient, diese Sicherung auf ein Sicherungsmedium zu kopieren, braucht B nicht ausgeführt werden, wenn die Sicherung A fehlgeschlagen ist.)
  • A || B
    B wird nur ausgeführt, wenn A einen Fehler geworfen hat
    (Bsp.: Befehl B dient dazu, Fehler zu protokollieren. Nur wenn der Befehl A fehlschlägt, wird B ausgeführt und der Fehler von A protokolliert.)

Variablen

Um Variablen zu setzen wird der Befehl "SET" benutzt. Die Syntax dafür ist "SET Variablenname=Wert". Um Variableninhalte zu löschen wird der Variablen einfach kein Wert zugewiesen. Möchte man sich alle Variablen (inkl. der Systemvariablen) anzeigen lassen, nutzt man den Befehl "SET" ohne weitere Parameter. Um sich nur bestimmte Variablen anzeigen zu lassen, verbindet man den Befehl "SET" mit dem dem Prä- oder Postfix der Variablen, die man sich ansehen möchte. Um sich den Variableninhalt anzeigen zu lassen, kann man den echo-Befehl zu nutzen.

Beispiele

  • setzen / ändern:
    „SET meinName=Torsten“
  • löschen:
    „SET meinName=“
  • anzeigen (alle):
    „SET“
  • anzeigen (alle mit Präfix „mein“):
    „SET mein“
  • ausgabe:
    „echo meinName“

Script für gruppenbasierte Netzlaufwerke

Voraussetzungen

  • ifmember.exe aus dem Windows Ressource Kit
  • ifmember.exe und Script in NETLOGON-Freigabe des DC

Script

@echo off

net use S: /DELETE

IFMEMBER abteilung1
    if %errorlevel%==1
    (net use S: \\FQDN\freigabe\abteilung1 /persistent:no )
IFMEMBER abteilung2
    if %errorlevel%==1 
    (net use S: \\FQDN\freigabe\abteilung2 /persistent:no )
IFMEMBER abteilung3
    if %errorlevel%==1 
    (net use S: \\FQDN\freigabe\abteilung3 /persistent:no )
IFMEMBER abteilung4
    if %errorlevel%==1
    (net use S: \\FQDN\freigabe\abteilung4 /persistent:no )
IFMEMBER Administratoren
    if %errorlevel%==1
    (net use S: \\FQDN\freigabe\edv /persistent:no )

Erklärung

  • @echo off
    sorgt dafür, dass die "Eingaben", welche vom Script getätigt werden, nicht in der Ausgabe erscheinen
  • net use <Laufwerksbuchstabe>: /delete
    grundsätzlich sollten die Laufwerksbuchstaben bzw. die mit ihnen verbunden Netzlaufwerke getrennt werden.
  • IFMEMBER abteilung1
    mit Hilfe des Tools "ifmember" wird überprüft, ob der Benutzer, unter welchem das Script ausgeführt wird, in der Gruppe "abteilung1" ist.
  • if %errorlevel%==1
    wenn das zuvor ausgeführt Tool "ifmember" den Wert "true" (1) zurückliefert, wird die nachfolgende Anweisung ausgeführt, ansonsten wird sie übersprungen.
  • (net use S: \\FQDN\freigabe\abteilung1 /persistent:no )
    wenn die IF-Anweisung erfüllt ist, wird der Laufwerksbuchstabe S: mit dem entsprechenden Netzlaufwerk verbunden.
    Der Parameter "/persistent:no" sorgt dafür, dass das Netzlaufwerk beim nächsten Systemstart nicht automatisch erneut verbunden wird.

Wer von meinen Kommilitonen schlau genug war, mal ein Blick auf meine Seite und diesen Artikel zu werfen kann sich die Hausaufgaben sparen und die "Musterlösung" nahezu 1:1 abschreiben. ;)

2 responses so far

Jan 17 2008

Profile Image of Torsten Feld
Torsten Feld

[Tutorial] Sicherung des Webspace mittels Cron und Bashscript

Filed under IT, Tutorials

Da ich mittlerweile zwei Blogs auf einem Webspace betreibe und diese aufgrund der Beiträge, Bildern und Fotos stetig mehr Speicherplatz benötigen, wurde es nun mal Zeit, eine Backupstrategie zu erstellen.

Die MySQL-Datenbanken werden über MySQLDumper per Cron und Perlscript gesichert und über E-Mail und FTP hinterlegt.

Für die hier gezeigte Sicherungslösung werden Cron-Jobs und (für die bequemere Verwaltung) ein SSH-Zugang benötigt.

Das Script gibt es hier zum Download. Einfach das .txt entfernen.

Zu der Erklärung des Scripts:

Continue Reading »

No responses yet

German flagItalian flagPortuguese flagEnglish flagFrench flagSpanish flagRussian flagGreek flagDutch flagCzech flagDanish flagFinnish flagSwedish flagNorwegian flag
By N2H

Trigami Affiliate
Fragenking