Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
— | anwenderwiki:windowsclient:postsync-aufgabenplanung [2013/10/10 17:59] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | {{tag> D}} | ||
+ | |||
+ | |||
+ | ====== Postsync-Script kombiniert mit Aufgabenplanung ====== | ||
+ | ===== Automatische Installation von Netzwerkdruckern - raumweise ===== | ||
+ | |||
+ | ==== Konzept: Postsync mit Aufgabenplanung mischen ==== | ||
+ | |||
+ | Mit den // | ||
+ | |||
+ | Ich habe dies so realisiert, dass ich ein batch-Script in die Aufgabenplanung aufgenommen habe, welches bei jedem Rechnerstart ausgeführt wird. Dies muss im image verewigt werden. Dieses batch-Script startet dann die Druckerinstallation. Mit diesem Mechanismus kann man eigentlich alles Mögliche nach der Syncronisation anstellen, deshalb habe ich die Scripte modularisiert. Wer nur Drucker installieren möchte kann alles auch in ein script packen. | ||
+ | |||
+ | Abgeschaut habe ich die Grundidee vom VAMT-Konzept. | ||
+ | |||
+ | Die Konfigurationsdatei und die Druckertreiber, | ||
+ | |||
+ | Die PCs haben Namen wie r102pc03. Für dieses Namensschema wird bei jedem PC in einem Raum der entsprechende Drucker eingerichtet. | ||
+ | ==== Verzeichnisse und Dateien ==== | ||
+ | |||
+ | Die folgenden Dateien und Verzeichnisse unter '' | ||
+ | |||
+ | Datei '' | ||
+ | |||
+ | @echo off & setlocal enabledelayedexpansion | ||
+ | | ||
+ | rem Diese script sollte als geplanter task nach dem Rechnerstart ausgeführt werden, | ||
+ | rem als Benutzer pgmadmin wählen. (Als SYSTEM geht es irgendwie nicht) | ||
+ | | ||
+ | set WorkDir=C: | ||
+ | | ||
+ | rem Prozesssteuerung durch lockfiles: Das script wird nur vollständig ausgeführt, | ||
+ | | ||
+ | set ToDo=%WorkDir%\postsync_system_todo | ||
+ | set Doing=%WorkDir%\postsync_system_doing | ||
+ | set Done=%WorkDir%\postsync_system_done | ||
+ | | ||
+ | rem Daten von Linuxmuster auslesen | ||
+ | | ||
+ | set raum=%COMPUTERNAME: | ||
+ | | ||
+ | :main | ||
+ | if exist " | ||
+ | if exist " | ||
+ | move /Y %ToDo% %Doing% | ||
+ | | ||
+ | rem | ||
+ | rem Drucker installieren | ||
+ | rem | ||
+ | | ||
+ | SET drucker_bat=%WorkDir%\drucker\drucker_installieren.bat | ||
+ | SET drucker_conf=%WorkDir%\drucker\drucker.conf | ||
+ | | ||
+ | FOR /F "eol=# delims=" | ||
+ | | ||
+ | GOTO :done | ||
+ | | ||
+ | :splitline | ||
+ | FOR /F " | ||
+ | | ||
+ | IF %raum%==%bla% call %drucker_bat% " | ||
+ | GOTO :eof | ||
+ | | ||
+ | | ||
+ | :done | ||
+ | move /Y %Doing% %Done% | ||
+ | goto :eof | ||
+ | | ||
+ | | ||
+ | :error | ||
+ | echo "Es ist ein Fehler bei der Bearbeitung aufgetreten" | ||
+ | | ||
+ | :eof | ||
+ | |||
+ | Datei '' | ||
+ | |||
+ | Verzeichnis '' | ||
+ | |||
+ | Datei '' | ||
+ | |||
+ | # drucker.conf: | ||
+ | # | ||
+ | # Raum ; Drucker .inf-Datei und Treiber ; Name für Drucker ; Name aus .inf-Datei ; IP des Druckers | ||
+ | # | ||
+ | r206; | ||
+ | r206; | ||
+ | |||
+ | |||
+ | Verzeichnis '' | ||
+ | |||
+ | |||
+ | Datei '' | ||
+ | |||
+ | @echo off | ||
+ | | ||
+ | rem dies script erwartet vier Parameter: | ||
+ | rem %1 Pfad zum Verzeichnis mit inf-Datei und Treiber-Datei | ||
+ | rem %2 Druckername : ist beliebig | ||
+ | rem %3 Druckertyp : muss mit den Name in der inf-Datei übereinstimmen | ||
+ | rem %4 IP-Adresse : Wie der drucker eingestellt ist | ||
+ | | ||
+ | rem Quelle: | ||
+ | rem An Linuxmuster angepasst: Helge Münnich, Merian-Schule, | ||
+ | | ||
+ | echo %~1 | ||
+ | echo %~2 | ||
+ | echo %~3 | ||
+ | echo %~4 | ||
+ | | ||
+ | SET InfPath=%1 | ||
+ | SET PrnName=%2 | ||
+ | SET PrnType=%3 | ||
+ | SET PortIP=%4 | ||
+ | | ||
+ | systeminfo | find " | ||
+ | if %ERRORLEVEL% == 0 goto Win7 | ||
+ | | ||
+ | systeminfo | find " | ||
+ | if %ERRORLEVEL% == 0 goto WinXP | ||
+ | | ||
+ | :Win7 | ||
+ | echo Running Windows 7 Script | ||
+ | | ||
+ | rem check if 32 or 64 bit | ||
+ | Set RegQry=HKLM\Hardware\Description\System\CentralProcessor\0 | ||
+ | REG.exe Query %RegQry% > C: | ||
+ | Find /i " | ||
+ | | ||
+ | If %ERRORLEVEL% == 0 ( | ||
+ | Echo "This is 32 Bit Win7" | ||
+ | rem Lehrerzimmer HP | ||
+ | cscript C: | ||
+ | cscript C: | ||
+ | cscript C: | ||
+ | | ||
+ | rem Lehrerzimmer Samsung | ||
+ | ) ELSE ( | ||
+ | Echo "This is 64 Bit Win7" | ||
+ | ) | ||
+ | goto exit | ||
+ | | ||
+ | Diese batch-Datei bietet die Möglichkeit für Windows XP bzw. für 64bit Win7 angepasste Befehle einzubauen. Die haben wir nicht - kann ich also nicht beitragen ... | ||
+ | ==== Erster Test ==== | ||
+ | |||
+ | Die Datei '' | ||
+ | |||
+ | Aus '' | ||
+ | |||
+ | Der Drucker sollte nun verfügbar sein. | ||
+ | ==== Aufgabenplanung einrichten ==== | ||
+ | |||
+ | In der Aufgabenplanung von Windows eine neue Aufgabe anlegen, die die Aktion '' | ||
+ | |||
+ | Eigentlich wollte ich dien Task als SYSTEM ausführen lassen, aber das geht aus irgendeinem Grund (welchen??? | ||
+ | |||
+ | ==== Zweiter Test ==== | ||
+ | |||
+ | Drucker löschen, '' | ||
+ | |||
+ | Wenn der Test erfolgreich ist, **muss man nun von diesem Rechner ein Image anlegen**, damit die Aufgabenplanung verewigt wird. Davor kann/sollte man die Druckerdateien löschen, aber erst nachdem diese auf den Server kopiert wurden, siehe unten. | ||
+ | ==== Postsync Script ==== | ||
+ | |||
+ | Zu jedem image gibt es auf dem Server unter ''/ | ||
+ | |||
+ | # $Id: win7-reactivate.postsync 998 2011-03-10 09:23:25Z tschmitt $ | ||
+ | | ||
+ | echo "##### POSTSYNC BEGIN #####" | ||
+ | | ||
+ | # Ggf. anzupassende Variablen. | ||
+ | # cil-Datei muss unter /var/linbo auf dem Server liegen. | ||
+ | mycil=" | ||
+ | # Zielverzeichnis auf der Betriebssystempartition. | ||
+ | mytarget=" | ||
+ | | ||
+ | # Server-IP wird berechnet. | ||
+ | myserverip=" | ||
+ | | ||
+ | # Wenn Netzwerkverbindung vorhanden ist, lade die cil-Datei in eine temporäre | ||
+ | # Datei in den lokalen Cache herunter. | ||
+ | if ! localmode; then | ||
+ | echo "Lade $mycil herunter ..." | ||
+ | rsync -L " | ||
+ | fi | ||
+ | | ||
+ | # Wenn temporäre cil-Datei vorhanden ist, benenne sie um. | ||
+ | [ -s "/ | ||
+ | | ||
+ | # Ist cil-Datei im lokalen Cache vorhanden, kopiere sie in den Ordner $mytarget | ||
+ | # auf der Betriebssystempartition. | ||
+ | if [ -s "/ | ||
+ | echo " | ||
+ | mkdir -p "/ | ||
+ | cp "/ | ||
+ | fi | ||
+ | | ||
+ | # | ||
+ | # linuxmuster-Verzeichnis muss unter / | ||
+ | # Zielverzeichnis auf der Betriebssystempartition. | ||
+ | mytarget_dir=" | ||
+ | | ||
+ | # Wenn Netzwerkverbindung vorhanden ist, lade die Dateien in eine temporäreen | ||
+ | # Datei in den lokalen Cache herunter. | ||
+ | #if ! localmode; then | ||
+ | # echo "Lade $mytarget_dir herunter ..." | ||
+ | # rsync -rL " | ||
+ | #fi | ||
+ | echo " | ||
+ | if [ -f "/ | ||
+ | rm "/ | ||
+ | fi | ||
+ | if [ -f "/ | ||
+ | echo " | ||
+ | rm "/ | ||
+ | fi | ||
+ | if [ -f "/ | ||
+ | echo " | ||
+ | rm "/ | ||
+ | fi | ||
+ | echo "Lade $mytarget_dir herunter ..." | ||
+ | rsync -r " | ||
+ | | ||
+ | | ||
+ | echo "##### POSTSYNC END #####" | ||
+ | |||
+ | Ab # | ||
+ | |||
+ | D.h. man muss vorher alles von '' | ||
+ | |||
+ | |||
+ | ==== Dritter Test ==== | ||
+ | |||
+ | Rechner syncen. | ||
+ | |||
+ | |||
+ | Will man nun einen neuen Drucker installieren, | ||