Windows 2000 führt netzwerkbasiertes Startupskript nicht aus
Hallo!
Ich habe folgendes Problem:
Ich habe ein kleines Heimnetzwerk mit 4 Workstations (unter Windows 2000) und einen Server der mit Debian Linux 3.2 und Samba 3.0.20 aufgesetzt ist. Der Server ist ein PDC und die WKS hängen alle in einer Domäne xy.
Da ich nun regelmäßig Updates und Software auf den WKs installieren möchte und nicht bei jeden Rechner immer seperat installieren.
Ich ging dies zuerst über eine cmd Datei (die über Netzpfade die Datein direkt aufruft und installiert [unattened] natürlich) an, dich ich auf den lokalen Rechner in der Gruppenrichtlinie einstellte. Meine Überlegung soweit. Das Skript sollte beim Herunterfahren ausgeführt werden, dann kann man sich den Neustart sparen.
Leider musste ich feststellen, dass dies nicht möglich ist, da da die Netzverbindung schon vorher getrennt wird.
Dann habe ich im Internet gelesen mit einem Startupskript müsste es gehen. Also habe ich das Skript vom Shutdown Ordner auf den lokalen Rechnern in den Startup Ordner und bootete den ersten Rechner neu. Doch das Skript wurde wieder nicht ausgeführt, da die Installation des Updates länger dauert.
Nun möchte ich gerne wissen, was ich in meinem Skript falsch gemacht habe:
Das Startup Skript am lokalen Rechner:
xy.cmd enthält nur \\sbauer01\tools\update.cmd
und ruft somit das unten stehende Skript auf:
update.cmd:
SKRIPT:
if exist \\sbauer01\tools\logs$\Windows2000-KB905749-x86-DEU\%computername% goto done1
echo ok > \\sbauer01\tools\logs$\Windows2000-KB905749-x86-DEU\%computername%
START /WAIT \\sbauer01\tools\tools\updates\Windows2000-KB905749-x86-DEU.EXE /quiet /norestart /log:\\sbauer01\tools\log$\Windows2000-KB905749-x86-DEU.txt
:done1
if exist \\sbauer01\tools\logs$\Windows2000-KB899591-x86-DEU\%computername% goto done2
echo ok > \\sbauer01\tools\logs$\Windows2000-KB899591-x86-DEU\%computername%
START /WAIT \\sbauer01\tools\tools\updates\Windows2000-KB899591-x86-DEU.EXE /quiet /norestart /log:\\sbauer01\tools\log$\Windows2000-KB899591-x86-DEU.txt
:done2
if exist \\sbauer01\tools\logs$\Windows2000-KB902400-x86-DEU\%computername% goto done3
echo ok > \\sbauer01\tools\logs$\Windows2000-KB902400-x86-DEU\%computername%
START /WAIT \\sbauer01\tools\tools\updates\Windows2000-KB902400-x86-DEU.EXE /quiet /norestart /log:\\sbauer01\tools\log$\Windows2000-KB899591-x86-DEU.txt
:done3
if exist \\sbauer01\tools\logs$\dotnet2fx\%computername% goto done4
echo ok > \\sbauer01\tools\logs$\dotnet2fx\%computername%
START /WAIT \\sbauer01\tools\dotnetfx.exe /Q:A /C:"INSTALL.EXE /Q"
:done4
if exist \\sbauer01\tools\logs$\postupdate\%computername% goto done5
echo ok > \\sbauer01\tools\logs$\postupdate\%computername%
\\sbauer01\tools\tools\updates\W2KpostSP4update\W2KpostSP4updater.exe -admin -silent -noreboot
:done5
if exist \\sbauer01\tools\logs$\spam\%computername% goto done6
echo ok > \\sbauer01\tools\logs$\spam\%computername%
\\sbauer01\tools\tools\updates\python-2.5.1.msi /quiet /norestart
\\sbauer01\tools\tools\updates\ActivePython-2.5.1.1-win32-x86.msi /quiet
\\sbauer01\tools\tools\updates\spambayes-1.1a3.exe /silent
:done6
c:\winnt\system32\shutdown.exe /L /R /Y /T:09
SKRIPT ENDE
Damit das Skript nur einmal ausgeführt, wird in einem Ordner eine Datei des PC Namen abgespeichert und bei jeden abruf des Skripts überprüft. Ist der Name vorhanden wird dieses Update nicht mehr installiert und somit übersprungen.
Warum funktioniert das Skript, wenn ich es im Windows normal aufrufen, aber nicht als Startup Skript?
In Samba ist der Ordner Tools auf guest = yes gesetzt, somit sollte jeder zugreifen können. Oder kann es da noch ein anderes Rechte Problem von der Windows/Samba Seite her geben?
Ich habe folgendes Problem:
Ich habe ein kleines Heimnetzwerk mit 4 Workstations (unter Windows 2000) und einen Server der mit Debian Linux 3.2 und Samba 3.0.20 aufgesetzt ist. Der Server ist ein PDC und die WKS hängen alle in einer Domäne xy.
Da ich nun regelmäßig Updates und Software auf den WKs installieren möchte und nicht bei jeden Rechner immer seperat installieren.
Ich ging dies zuerst über eine cmd Datei (die über Netzpfade die Datein direkt aufruft und installiert [unattened] natürlich) an, dich ich auf den lokalen Rechner in der Gruppenrichtlinie einstellte. Meine Überlegung soweit. Das Skript sollte beim Herunterfahren ausgeführt werden, dann kann man sich den Neustart sparen.
Leider musste ich feststellen, dass dies nicht möglich ist, da da die Netzverbindung schon vorher getrennt wird.
Dann habe ich im Internet gelesen mit einem Startupskript müsste es gehen. Also habe ich das Skript vom Shutdown Ordner auf den lokalen Rechnern in den Startup Ordner und bootete den ersten Rechner neu. Doch das Skript wurde wieder nicht ausgeführt, da die Installation des Updates länger dauert.
Nun möchte ich gerne wissen, was ich in meinem Skript falsch gemacht habe:
Das Startup Skript am lokalen Rechner:
xy.cmd enthält nur \\sbauer01\tools\update.cmd
und ruft somit das unten stehende Skript auf:
update.cmd:
SKRIPT:
if exist \\sbauer01\tools\logs$\Windows2000-KB905749-x86-DEU\%computername% goto done1
echo ok > \\sbauer01\tools\logs$\Windows2000-KB905749-x86-DEU\%computername%
START /WAIT \\sbauer01\tools\tools\updates\Windows2000-KB905749-x86-DEU.EXE /quiet /norestart /log:\\sbauer01\tools\log$\Windows2000-KB905749-x86-DEU.txt
:done1
if exist \\sbauer01\tools\logs$\Windows2000-KB899591-x86-DEU\%computername% goto done2
echo ok > \\sbauer01\tools\logs$\Windows2000-KB899591-x86-DEU\%computername%
START /WAIT \\sbauer01\tools\tools\updates\Windows2000-KB899591-x86-DEU.EXE /quiet /norestart /log:\\sbauer01\tools\log$\Windows2000-KB899591-x86-DEU.txt
:done2
if exist \\sbauer01\tools\logs$\Windows2000-KB902400-x86-DEU\%computername% goto done3
echo ok > \\sbauer01\tools\logs$\Windows2000-KB902400-x86-DEU\%computername%
START /WAIT \\sbauer01\tools\tools\updates\Windows2000-KB902400-x86-DEU.EXE /quiet /norestart /log:\\sbauer01\tools\log$\Windows2000-KB899591-x86-DEU.txt
:done3
if exist \\sbauer01\tools\logs$\dotnet2fx\%computername% goto done4
echo ok > \\sbauer01\tools\logs$\dotnet2fx\%computername%
START /WAIT \\sbauer01\tools\dotnetfx.exe /Q:A /C:"INSTALL.EXE /Q"
:done4
if exist \\sbauer01\tools\logs$\postupdate\%computername% goto done5
echo ok > \\sbauer01\tools\logs$\postupdate\%computername%
\\sbauer01\tools\tools\updates\W2KpostSP4update\W2KpostSP4updater.exe -admin -silent -noreboot
:done5
if exist \\sbauer01\tools\logs$\spam\%computername% goto done6
echo ok > \\sbauer01\tools\logs$\spam\%computername%
\\sbauer01\tools\tools\updates\python-2.5.1.msi /quiet /norestart
\\sbauer01\tools\tools\updates\ActivePython-2.5.1.1-win32-x86.msi /quiet
\\sbauer01\tools\tools\updates\spambayes-1.1a3.exe /silent
:done6
c:\winnt\system32\shutdown.exe /L /R /Y /T:09
SKRIPT ENDE
Damit das Skript nur einmal ausgeführt, wird in einem Ordner eine Datei des PC Namen abgespeichert und bei jeden abruf des Skripts überprüft. Ist der Name vorhanden wird dieses Update nicht mehr installiert und somit übersprungen.
Warum funktioniert das Skript, wenn ich es im Windows normal aufrufen, aber nicht als Startup Skript?
In Samba ist der Ordner Tools auf guest = yes gesetzt, somit sollte jeder zugreifen können. Oder kann es da noch ein anderes Rechte Problem von der Windows/Samba Seite her geben?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 60370
Url: https://administrator.de/contentid/60370
Ausgedruckt am: 23.11.2024 um 01:11 Uhr
13 Kommentare
Neuester Kommentar
Hallo,
ich sehe jetzt zwar nicht wo der Fehler ist [1], aber warum verteilst Du die Windows Updates nicht mit dem WSUS?
http://www.gruppenrichtlinien.de/HowTo/WSUS_Server.htm
Wäre das nicht einfacher?
[1]
Du hast das Script in ...\GroupPolicy\Machine\Scripts\Startup und von da startet es nicht automatisch?
Aber wenn Du es dort manuell aufrufst funktioniert es?
So richtig verstanden? Wenn ja, dann:
Start-Ausführen --> gpedit.msc --> Windows Einstellungen --> Scripts --> Doppelklick auf Starten - Was wird dir angezeigt?
gruß
ich sehe jetzt zwar nicht wo der Fehler ist [1], aber warum verteilst Du die Windows Updates nicht mit dem WSUS?
http://www.gruppenrichtlinien.de/HowTo/WSUS_Server.htm
Wäre das nicht einfacher?
[1]
Du hast das Script in ...\GroupPolicy\Machine\Scripts\Startup und von da startet es nicht automatisch?
Aber wenn Du es dort manuell aufrufst funktioniert es?
So richtig verstanden? Wenn ja, dann:
Start-Ausführen --> gpedit.msc --> Windows Einstellungen --> Scripts --> Doppelklick auf Starten - Was wird dir angezeigt?
gruß
Hallo
Nicht-WIN-Server habsch übersehen
Schreib mal alle "echo ok >" um in "echo ok ^>" ---> vergiss es, du wolltest das sicher ins Log haben
gruß
Nicht-WIN-Server habsch übersehen
gruß
Hallo,
Wie sieht es mit "call \\sbauer01\tools\update.cmd" aus?
gruß
START /WAIT \\sbauer01\tools\update.cmd
naja dann hängt die cmd ja in der Warteschleife.Wie sieht es mit "call \\sbauer01\tools\update.cmd" aus?
gruß
Hallo,
ich behelfe mir immer mit log files > log.txt oder dem Pause-Befehl
Aber warte mal bis die Batchexperten das hier lesen.
Prüf mal ob "if /i exist..." weiterhilft.
Enthält %computername% eventuell Leerzeichen? dann dafür sorgen das die Pfade immer in "..." stehen
Ansonsten hat "Biber" hier was zu debugging geschrieben Batch Datei zeigt sich ganz kurz und schließt dann wieder
gruß
So eine Art debugging meine ich. Geht sowas?
Mir nicht bekanntich behelfe mir immer mit log files > log.txt oder dem Pause-Befehl
Aber warte mal bis die Batchexperten das hier lesen.
Prüf mal ob "if /i exist..." weiterhilft.
/i
Erzwingt bei Zeichenfolgenvergleichen das Ignorieren der Groß-/Kleinschreibung. Sie können /i bei der Form Zeichenfolge1==Zeichenfolge2 von if verwenden. Diese Vergleiche sind generisch: falls sowohl Zeichenfolge1 als auch Zeichenfolge2 ausschließlich aus numerischen Zeichen bestehen, werden die Zeichenfolgen in Zahlen konvertiert, und es wird ein numerischer Vergleich ausgeführt.
Enthält %computername% eventuell Leerzeichen? dann dafür sorgen das die Pfade immer in "..." stehen
Ansonsten hat "Biber" hier was zu debugging geschrieben Batch Datei zeigt sich ganz kurz und schließt dann wieder
gruß
Moin cle1986,
ein nahe liegender Verdacht wäre doch, dass schlicht und einfach für den User, mit dem Du den Task ausführen lasst, das Laufwerk "\\sbauer01\tools\logs$\" nicht sichtbar ist.
Wenn alle "if exist \\sbauer01\tools\logs$\..."-Prüfungen ins Leere laufen, hast Du doch mit Deinem Schnipsel genau diesen Effekt.
Also wäre doch das Zweitnaheliegenste, zusätzlich mal ein paar Zeilen für den Not-exist-Fall einzubauen.
Mach mal so etwas in der Art, dann ist es wenigstens verifiziert, dass es ein Rechteproblem ist.
Gruß
Biber
ein nahe liegender Verdacht wäre doch, dass schlicht und einfach für den User, mit dem Du den Task ausführen lasst, das Laufwerk "\\sbauer01\tools\logs$\" nicht sichtbar ist.
Wenn alle "if exist \\sbauer01\tools\logs$\..."-Prüfungen ins Leere laufen, hast Du doch mit Deinem Schnipsel genau diesen Effekt.
Also wäre doch das Zweitnaheliegenste, zusätzlich mal ein paar Zeilen für den Not-exist-Fall einzubauen.
if not exist \\sbauer01\tools\logs$ ( echo \\sbauer01\tools\logs$ jibbet nicht) && pause
-oder-
if not exist \\sbauer01\tools\logs$ echo %date% %time% Server nicht gefunden>> lokalesLW\Logs\Update.err
Mach mal so etwas in der Art, dann ist es wenigstens verifiziert, dass es ein Rechteproblem ist.
Gruß
Biber
Na ja, cle1986,
dann habe ich jetzt eine gute und eine gutere Nachricht für Dich:
Also hast Du, wie immer im Leben, zwei Möglichkeiten:
Grüße
Biber
dann habe ich jetzt eine gute und eine gutere Nachricht für Dich:
- Der Batch wird aufgerufen und funktioniert
- Du weißt jetzt, dass der Batch-ausführende User keine Lese- (oder Seh-)Rechte auf das Share hat.
Also hast Du, wie immer im Leben, zwei Möglichkeiten:
- entweder Du lässt den Task von einem User ausführen, der die Rechte hat
- oder Du gibst dem User, der den Task ausführt (vermutlich "SYSTEM") die Rechte auf den Share.
Grüße
Biber