el-dtor
Goto Top

Logfile das Passagen einer Batch abfängt

Hi,

ich stehe vor einem kleinen Problem. Aktuell paketiere ich den PaloAlto Cortex in der Version 7.6. Wir werden mit diesem Tool (und weitere), TrendMicro ablösen. Da wir über 4tsd Clients weltweit haben, nutzen wir zur Softwareverteilung Matrix42 / Emprium .

Allerdings habe ich ein paar Probleme mit der Batch von PaloAlto Cortex. Ich habe keine Ahnung, was im Hintergrund genau passiert.

Mein Plan ist es also, den Deinstallationsbatch von Cortex irgendwie abzufangen und zu schauen, was er genau macht.

Welche Möglichkeit habe ich also nun, einzelne Sequenzen (interessant ab der :checkTrapsInstalled -Zeile), mir in einem LOG ausgeben zu lassen, damit ich nachvollziehen kann, was er genau macht um mir diese Parameter in das Skript für Matrix zu basteln.

Vielen Dank für Eure Hilfe!

Hier der Code des Deinstallationsbatch.

:LOG
@echo off
REM only change trapsPassword accoordingly, don't touch the rest  
set trapsPassword=Password1
REM DONT CHANGE BELOW
set trapsCytool="%programFiles%\Palo Alto Networks\Traps\cytool.exe"  
set logFileNameOnly=UninstallBatchLogs_%computername%_%time:~0,2%%time:~3,2%%time:~6,2%.txt
set logFile=%temp%\%logFileNameOnly%
set accessDenied="Error 5: Access is denied."  
:start
echo Start Time: %date% %time%
echo Start Time: %date% %time% > %logFile%
echo Machine Name: %computername%
echo Machine Name: %computername% >> %logFile%
:checkSystemLanguage
for /f "tokens=*" %%v in ('reg query HKLM\SYSTEM\CurrentControlSet\Control\Nls\Language /v InstallLanguage') do (  
set searchResults= %%v)
set systemLanguage=%searchResults:~30%
if %systemLanguage% NEQ 0409 (
echo OS Language not in English! OS language is 0x%systemLanguage%! Aborting...
echo OS Language not in English! OS language is 0x%systemLanguage%! Aborting... >> %logFile% 
goto finishSaveLogs )
echo OS Language: English
echo OS Language: English >> %logFile%
:checkOsVersion
for /f "tokens=*" %%v in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName') do (  
set searchResults= %%v)
set systemVersion=%searchResults:~26%
echo OS Version: %systemVersion%
echo OS Version: %systemVersion% >> %logFile%
:checkOsArchitecture
if %processor_architecture% EQU AMD64 (
set osArch=x64
echo OS Architecture: x64
echo OS Architecture: x64 >> %logFile% )
if %processor_architecture% EQU x86 (
if not defined processor_architew6432 (
set osArch=x86
echo OS Architecture: x86
echo OS Architecture: x86 >> %logFile% ))
:checkTrapsInstalled
if not exist "%programFiles%\Palo Alto Networks\Traps\" (  
echo Cortex XDR agent not installed! Aborting...
echo Cortex XDR agent not installed! Aborting... >> %logFile%
goto finishSaveLogs )
echo Starting graceful uninstall process for Cortex XDR...
echo Starting graceful uninstall process for Cortex XDR... >> %logFile%
:checkTrapsVersion
for /f "tokens=*" %%v in ('reg query HKLM\Software\Cyvera\Client /v "Product Version"') do (  
set searchResults= %%v)
set trapsVersion=%searchResults:~30%
echo Found Cortex XDR version: %trapsVersion%
echo Found Cortex XDR version: %trapsVersion% >> %logFile%
set trapsVersion=%trapsVersion:~0,5%
set trapsMainVersion=%trapsVersion:~0,2%
:checkTrapsCompatible
echo Looking for Cortex XDR product GUID...
echo Looking for Cortex XDR product GUID... >> %logFile%
if %trapsMainVersion% EQU 7. (
goto uninstallGUID_Cortex ) 
if %trapsMainVersion% EQU 6. (
goto uninstallGUID_Traps )
if %trapsMainVersion% EQU 5. (
goto uninstallGUID_Traps )
if %trapsMainVersion% EQU 4. (
goto uninstallGUID_Traps )
echo Cortex XDR version not supported! Script intended for Cortex XDR 7.x, 6.x, 5.x and 4.x. Aborting...
echo Cortex XDR version not supported! Script intended for Cortex XDR 7.x, 6.x, 5.x and 4.x. Aborting... >> %logFile%
goto finishSaveLogs
:uninstallGUID_Cortex
for /f "tokens=*" %%v in ('"reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall /s /f "Cortex XDR"|findstr /i "currentversion\uninstall""') do (  
set searchResults= %%v)
set productCode=%searchResults:~72%
echo Cortex XDR productCode: %productCode%
echo Cortex XDR productCode: %productCode% >> %logFile%
:startTraps
echo Making sure Cortex XDR is running...
echo Making sure Cortex XDR is running... >> %logFile%
%trapsCytool% runtime start >> %logFile%
echo Waiting 5 seconds...
echo Waiting 5 seconds... >> %logFile%
timeout 5 > NUL
echo %trapsPassword%|%trapsCytool% checkin
:disableSprot
echo Disabling Cortex XDR agent tampering protection...
echo Disabling Cortex XDR agent tampering protection... >> %logFile%
for /f "tokens=*" %%v in ('"echo %trapsPassword%|%trapsCytool% protect disable"') do (  
set searchResults=%%v)
set searchResultsCut=%searchResults:~0,12%
set accessDeniedCut=%accessDenied:~1,12%
if "%searchResultsCut%" EQU "%accessDeniedCut%" (  
echo Failed running cytool!! Incorrect password or CMD not elevated. Aborting...
echo Failed running cytool!! Incorrect password or CMD not elevated. Aborting... >> %logFile%
goto finishSaveLogs )
goto uninstallMsiexec_Cortex
:uninstallMsiexec_Cortex
echo Calling msiexec to start Cortex XDR uninstall...
echo Calling msiexec to start Cortex XDR uninstall... >> %logFile%
msiexec /X%productCode% /quiet /l*v %temp%\CortexXdrUninstallLog_%computername%_%time:~0,2%%time:~3,2%%time:~6,2%.txt
echo Finished graceful uninstall process for Cortex XDR...
echo Finished graceful uninstall process for Cortex XDR... >> %logFile% 
goto finishSaveLogs
:uninstallGUID_Traps
for /f "tokens=*" %%v in ('"reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall /s /f "Traps"|findstr /i "currentversion\uninstall""') do (  
set searchResults= %%v)
set productCode=%searchResults:~72%
echo Cortex XDR productCode: %productCode%
echo Cortex XDR productCode: %productCode% >> %logFile% 
echo Calling msiexec to start Cortex XDR uninstall...
echo Calling msiexec to start Cortex XDR uninstall... >> %logFile% 
msiexec /X%productCode% /quiet /l*v %temp%\CortexXdrUninstallLog_%computername%_%time:~0,2%%time:~3,2%%time:~6,2%.txt UNINSTALL_PASSWORD=%trapsPassword%
echo Finished graceful uninstall process for Cortex XDR...
echo Finished graceful uninstall process for Cortex XDR... >> %logFile% 
goto finishSaveLogs
:finishSaveLogs
echo Finish Time: %date% %time%
echo Finish Time: %date% %time% >> %logFile%
echo Batch logs at: %logFile%
echo Batch logs at: %logFile% >> %logFile%
echo Uninstall logs at: %temp%\CortexXdrUninstallLog_%computername%_%time:~0,2%%time:~3,2%%time:~6,2%.txt
echo Uninstall logs at: %temp%\CortexXdrUninstallLog_%computername%_%time:~0,2%%time:~3,2%%time:~6,2%.txt >> %logFile%

Content-Key: 1731878325

Url: https://administrator.de/contentid/1731878325

Printed on: April 24, 2024 at 03:04 o'clock

Mitglied: 149569
149569 Jan 17, 2022 updated at 12:44:37 (UTC)
Goto Top
Mein Plan ist es also, den Deinstallationsbatch von Cortex irgendwie abzufangen und zu schauen, was er genau macht.
Wozu noch abfangen?? Du hast doch im Klartext vorliegen was er macht face-smile.
Wenn du was an den Variablen nicht verstehst lasst sie dir halt per ECHO in die Shell oder das in das Logfile ausgeben.

Ich habe keine Ahnung, was im Hintergrund genau passiert.
Mal ehrlich, Batch gibt's nicht erst seit gestern und wirklich geheimnisvolles passiert in dem Skript ehrlich gesagt nicht ...
Windows Batch Grundlagen
https://www.dostips.com/DtTipsStringManipulation.php
Member: beidermachtvongreyscull
beidermachtvongreyscull Jan 17, 2022 updated at 13:24:40 (UTC)
Goto Top
Das Script da erzeugt doch ein Logfile.
Ist das nicht geeignet?
BIN DRAUẞEN
Member: EL-DTOR
EL-DTOR Jan 17, 2022 at 12:45:40 (UTC)
Goto Top
Leider ist es nicht so klar, was genau passiert. Für die Paketierung, muss ich ein PW mitgeben und die Frage ist, wo ich dieses mitgeben kann zwecks Deinstallation. Für die Paketierung müsste diesem Befehl irgendwie beibringen, dass er das Passwort mitgeschickt bekommt:

Und da Frage ich mich, was dieses: cytool /a protect disable
Mitglied: 149569
149569 Jan 17, 2022 updated at 12:55:45 (UTC)
Goto Top
Zitat von @EL-DTOR:

Leider ist es nicht so klar, was genau passiert.
Also mir schon, da passiert nun echt nichts weltbewegendes.
Für die Paketierung, muss ich ein PW mitgeben und die Frage ist, wo ich dieses mitgeben kann zwecks Deinstallation. Für die Paketierung müsste diesem Befehl irgendwie beibringen, dass er das Passwort mitgeschickt bekommt:
Zeile 4 reicht dir nicht??
set trapsPassword=Password1
Also mal lesen sollte man das Skript schon 🙈
Mitglied: 149569
149569 Jan 17, 2022 updated at 12:54:03 (UTC)
Goto Top
Zitat von @EL-DTOR:
Und da Frage ich mich, was dieses: cytool /a protect disable
Enable or Disable Service Protection Settings on the Endpoint
Da wird das Passwort einfach per echo an den Befehl per pipe übergeben so das der User es nicht eingeben muss.
Member: EL-DTOR
EL-DTOR Jan 17, 2022 at 12:55:56 (UTC)
Goto Top
Dieses Passwort wird über die Endpoint-Console mitgeben. In der Paketierung geht es darum, dem ganzen auch eine automatisierte Deinstallation durchführen zu können. Dazu ist es wichtig zu erfahren, was der Batch wo genau macht. Und darum muss ich ihn Protokollieren. Über die Variablen lässt sich nicht viel erfahren. Ferner geht es mir um einen CODE-Schnipsel und verschiedene Sequenzen nachzuvollziehen.
Mitglied: 149569
149569 Jan 17, 2022 updated at 13:03:32 (UTC)
Goto Top
Zitat von @EL-DTOR:

Dieses Passwort wird über die Endpoint-Console mitgeben. In der Paketierung geht es darum, dem ganzen auch eine automatisierte Deinstallation durchführen zu können.
Dann übergebe das Passwort halt als Parameter an das Skript in dem du Zeile 4 so anpasst
set "trapsPassword=%~1"  
und dann das Passwort dem Skript als Parameter übergibst
meinscript.cmd "MeinPasswort"  
Feddisch.

Dazu ist es wichtig zu erfahren, was der Batch wo genau macht.
????? Steht doch im Skript was gemacht wird. Wenn du keine Ahnung von Batch hast dann belese dich oder lass es jemanden machen der versteht was bei den Batch Befehlen passiert.
Ferner geht es mir um einen CODE-Schnipsel und verschiedene Sequenzen nachzuvollziehen.
WAS willst du nachvollziehen? Wie gesagt da passiert nichts "Geheimes". Gehe jede Zeile durch schlage die Befehle nach und dann weist du was da passiert... Ansonsten frage was du nicht verstehst, oder sollen wir dir hier jede einzelne Zeile erläutern ?!
Member: EL-DTOR
EL-DTOR Jan 17, 2022 at 13:17:17 (UTC)
Goto Top
Zitat von @149569:

Zitat von @EL-DTOR:
Und da Frage ich mich, was dieses: cytool /a protect disable
Enable or Disable Service Protection Settings on the Endpoint
Da wird das Passwort einfach per echo an den Befehl per pipe übergeben so das der User es nicht eingeben muss.

Genau das ist das Problem... das Passwort wird bei der Deinstallation beim User abgefragt. Der Logfile wird ständig überschrieben, dadurch kann ich kein Paket für Matrix42 erstellen. Daher muss ich herausfinden, was wo in der Reg passiert um dementsprechend mit dem Matrium-Skript reinzugrätschen. D.h. ich suche eine Lösung, die eben jede einzelne Sequenz des Batches anschaut was passiert und wo er auf die Nase fällt , wenn Änderungen vorgenommen werden.
Member: EL-DTOR
EL-DTOR Jan 17, 2022 at 13:44:05 (UTC)
Goto Top
Zitat von @beidermachtvongreyscull:

Das Script da erzeugt doch ein Logfile.
Ist das nicht geeignet?
BIN DRAUẞEN

und das wird ständig überschrieben face-confused
Member: EL-DTOR
EL-DTOR Jan 18, 2022 at 06:20:55 (UTC)
Goto Top
Moin, ich muss eher wissen, was die Variablen übergeben.