Wir haben seit kurzem Sophos Endpoint Protection was ich über Sophos Central manage.
Dieses möchte ich nun ausrollen für den Rest der Mitarbeiter. Geschehen soll dies über ein CMD Skript was ich auf der Sophos Support Seite bereits gefunden habe:
@echo off SET MCS_ENDPOINT=Sophos\Management Communications System\Endpoint\McsClient.exe IF "%PROCESSOR_ARCHITECTURE%" == "x86" GOTO X86_PROG IF NOT EXIST "%ProgramFiles(x86)%\%MCS_ENDPOINT%" GOTO INSTALL exit /b 0 :X86_PROG IF NOT EXIST "%ProgramFiles%\%MCS_ENDPOINT%" GOTO INSTALL exit /b 0 :INSTALL pushd \\servername\share SophosSetup.exe --quiet Popd
Leider funktioniert dies nicht. Nach einiger Fehlersuche habe ich festgestellt, der Code bricht schon im ersten Block ab.
Leider habe ich keine großartigen Kenntnisse in Batch Programmierung und bin daher etwas aufgeschmissen an diesem Punkt.
Die dazugehörige GPO wird wie geplant angewendet. Die Setup.exe soll über ein freigegebenes Netzlaufwerk M:\Endpoint\SophosSetup.exe verteilt werden.
Kann mir jemand helfen, wie der Code geändert werden muss damit dies funktioniert?
Vielen Dank im voraus!
Hallo Administrator User178,
die Frage wäre im Central Forum besser aufgehoben :).
Was genau ist der Code bricht schon im ersten Block ab, wie lief die Fehlersuche ab? Gibt es eine Fehlermeldung oder hört das Skript irgendwo einfach auf?
Christian
Guten Morgen,
das Skript hört nach dem ersten Block einfach auf. Anbei mal ein Screenshot von dem Text den er ausgibt.
Ist ein Moderator in der Lage, den Thread in das dafür passendere Forum zu verschieben?
Dann ist der Freigabe Name wo sich SophosSetup.exe befindet nicht richitg. Evtl. mal mit \\xxxx\muster\Endpoint\ probieren.
von meiner Seite aushm, entweder kann ich nicht im UTM Forum herum schieben oder das UTM Forum ist speziell - @BAlfson: Bob, what do you say?
es springt leider nicht weiterdas sollte nur dann der Fall sein, wenn McsClient.exe schon vorhanden ist - das sollte leicht festzustellen sein.
QC said:das sollte nur dann der Fall sein, wenn McsClient.exe schon vorhanden ist - das sollte leicht festzustellen sein.
Ist auf dem Test-Client nicht vorhanden. Überhaupt ist dort natürlich gar kein Sophos Verzeichnis angelegt da es ja durch das Skript letzendlich installiert werden soll. ^^
Interessanterweise bricht er auf dem Testclient sogar schon bei der zweiten Zeile:
IF "%PROCESSOR_ARCHITECTURE%" == "x86" GOTO X86_PROG
ab.
Keine Ahnung warum der Check welche Architektur vorhanden ist solche Probleme bereitet.
klingt sonderbar. Ich würde testen, ob IF EXIST ebenso False zurückgibt oder nicht, z.B.IF EXIST "%ProgramFiles(x86)%\%MCS_ENDPOINT%" ECHO Mcs existiert
IF EXIST "%ProgramFiles(x86)%\%MCS_ENDPOINT%" ECHO Mcs existiert
Hallo Christian,
interessanterweise gibt der Befehl überhaupt keine Ausgabe. Ich weiß nicht ob das so sein soll?
Ich kenne mich leider in CMD so überhaupt nicht aus, macht es Sinn wenn ich sowieso nur 64 Bit Systeme bediene den Part mit dem Architektur Check einfach rauszulöschen und irgendwie eine Brücke einzurichten das er direkt zu dem Install Part übergeht?
der Architektur Check ist nicht nötig, wenn es keine 32Bit-Systeme gibt, klar.Das IF NOT EXIST dient dazu, den Installer nur dann aufzurufen, wenn MCS noch nicht installiert ist. Das Statement sollte daher nicht "überbrückt" werden und es sollte auch richtig funktionieren. Mir fällt kein Grund für ein Fehlverhalten ein.Die ZeileIF EXIST "%ProgramFiles(x86)%\%MCS_ENDPOINT%" (ECHO Mcs existiert) ELSE ECHO Doch nichtsollte Doch nichtausgeben, und umgekehrt IF NOT EXIST "%ProgramFiles(x86)%\%MCS_ENDPOINT%" ECHO Mcs existiert nichtMcs existiert nicht
Wenn das richtig ausgeführt wird, muss das auch mit einem GOTO so sein, das Skript sollte nicht in die PAUSE laufen. Übrigens: CMD Skripts sind keine Geheimwissenschaft, eine Übersicht gibt es bei SS64.com.
Danke für deine ausgiebige Hilfe Christian!
Der Code IF EXIST "%ProgramFiles(x86)%\%MCS_ENDPOINT%" (ECHO Mcs existiert) ELSE ECHO Doch nicht
ergibt "doch nicht" denn das Verzeichnis ist nicht vorhanden.
Ich frage mich gerade wie man den Code genau umschreiben muss, um den Architektur Check der nicht notwendig ist zu entfernen.
Die Zeile
SET MCS_ENDPOINT=Sophos\Management Communications System\Endpoint\McsClient.exe
Wird glaube ich benötigt, da er dort eine Variable definiert? Der Inhalt dieser würde dann über pushd weitergegeben werden an das Verzeichnis mit der Sophos.exe?
Ansonsten wenn nicht benötige ich ja theoretisch nur einen Verweis auf den Netzwerkspeicherort?
Was ist denn jetzt mit dem Freigabe Name in dem sich die Exe befindet, ist der richtig?
pushd \\server\muster\Endpoint
Bitte mal im Script an erster Stelle das echo off durch echo on ersetzten und die Ausgabe anzeigen.
zusätzlich noch ein "net use" Ausgabe ausgeben und hier posten.
Sofern die Freigabe von \\server\ richtig ist, funktioniert das Script auch ohne Probleme!
das hier ist zwar kein CMD/.BAT Forum [:)] ....
SET MCS_ENDPOINT definiert eben diese Variable, sonst müsste man den langen Pfad zweimal tippen (und wenn nötig an zwei Stellen ändern).
SET MCS_ENDPOINT
pushd (einfach einmal im Command Prompt Fenster pushd /? eingeben) speichert das aktuelle Arbeitsverzeichnis und ändert es dann auf den angegebenen Pfad. Hat nichts mit der Variablen zu tun. cd
Eine "naive" Minimalvariante (es geht aber noch primitiver) des Skripts wäre:IF EXIST "C:\Program Files (x86)\Sophos\Management Communications System\Endpoint\McsClient.exe" exit /b 0pushd \\server\muster\EndpointSophosSetup.exe --quiet popd
Sophos\Management Communications System\Endpoint\McsClient.exe
SophosSetup.exe --quiet popd
64Bit angenommen, keine Variable, kein GOTO. Aber eigentlich tut der Architektur Check nicht weh und eigentlich sollte das Skript aus dem ersten Post ja funktionieren.
Erstmal vielen Dank an euch beide, ich habe es zu 90% jetzt hintereinander! Die BAT Datei installiert die Setup.exe im Hintergrund.
Ich habe das Skript wie folgt auf das notwendigste reduziert:
@echo offpushd \\Servername\muster1\Endpoint\SophosSetup.exe --quietPopd
Auch wenn das Netzlaufwerk nur mit Namen "Muster" verbunden worden ist (automatisch gemappt per GPO) ist der wirkliche Name aber muster1.
Nach einem kurzen Test muss ich jetzt nur noch die Proxy Einstellungen für 64 bit unter
cd C:\Windows\SysWOW64
netsh winhttp set proxy proxy-server="http=proxy server address:proxy port;https=proxy server address:proxy port"
Dementsprechend anpassen das unser Proxy die Exe herunterladen lässt. Das werde ich auch noch in die GPO für die Verteilung packen und dann sollte es das gewesen sein.
Vielen Dank nochmal!