This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Sophos Endpoint Protection auf Clients per CMD Skript installieren

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!



This thread was automatically locked due to age.
Parents
  • 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?

  • Hallo ,

    Ist ein Moderator in der Lage
    ja, aber nur wenn der Original Poster Mitglied der betreffenden Foren-Gruppe ist.

    Wo kommt das PAUSE Statement her bzw. wo im Skript ist es eingefügt - direkt nach :INSTALL? Da offensichtlich ECHO ON ist, scheint ja direkt zu PAUSE gesprungen zu werden und da geht es ja erst nach Tastendruck weiter. Da sollte sich dann das PUSHD melden.

    Christian

  • QC said:
    ja, aber nur wenn der Original Poster Mitglied der betreffenden Foren-Gruppe ist.

    Das ist geändert, von meiner Seite aus steht dem damit nichts mehr im Wege :)

    Ich hänge mal ein Bild an mit dem Code. Das echo on habe ich natürlich umgeändert und das Pause eingefügt damit ich überhaupt einen Output aus der Konsole bekomme.

    Nach dem Tastendruck von PAUSE beendet sich das Skript sofort, es springt leider nicht weiter wie es eigentlich sollte.

     

  • Dann ist der Freigabe Name wo sich SophosSetup.exe befindet nicht richitg. Evtl. mal mit \\xxxx\muster\Endpoint\  probieren.

  • Hallo Administrator User178,

    von meiner Seite aus
    hm, entweder kann ich nicht im UTM Forum herum schieben oder das UTM Forum ist speziell - @: Bob, what do you say?

    es springt leider nicht weiter
    das sollte nur dann der Fall sein, wenn McsClient.exe schon vorhanden ist - das sollte leicht festzustellen sein.

    Christian

  • 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.

  • Hallo Administrator User178,

    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

    Christian

  • 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?

  • Hallo Administrator User178,

    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 Zeile
    IF EXIST "%ProgramFiles(x86)%\%MCS_ENDPOINT%" (ECHO Mcs existiert) ELSE ECHO Doch nicht
    sollte
    Doch nicht
    ausgeben, und umgekehrt 
    IF NOT EXIST "%ProgramFiles(x86)%\%MCS_ENDPOINT%" ECHO Mcs existiert nicht
    Mcs 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.

    Christian

  • 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?

     

Reply
  • 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?

     

Children
  • 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!

  • Hallo Administrator User178,

    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).

    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 0
    pushd \\server\muster\Endpoint
    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.

    Christian

  • 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 off
    pushd \\Servername\muster1\Endpoint\
    SophosSetup.exe --quiet
    Popd

    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

    1. cd C:\Windows\SysWOW64
    2. 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!