Seite 1 von 1

Laufende Prozesse durchsuchen?

Verfasst: 28 Apr 2015, 16:36
von skranz1982
Hallo allerseits!

Mein Arbeitgeber hat vor ein paar Wochen OPSI in Betrieb genommen und wir testen gerade schön vor uns hin... Ich bin als Paketentwickler dabei und habe eine Frage dazu... Ist es möglich, mit OPSI die laufenden Prozesse zu durchsuchen? Mit <killtask "prozess.exe"> kann ich zwar ein Programm abschießen, aber wie ermittle ich vorher, ob es überhaupt noch läuft?

Hintergrund meiner Frage ist folgender: Wir nutzen das ABO "PatchManagement" und als Zusatz zum Firefox-Paket habe ich ein Paket "ffconfig" geschrieben, dass zwei Dateien im Installationsverzeichnis von Firefox ablegt:

* {Installationsordner}\defaults\pref\local-settings.js
* {Installationsordner}\mozilla.cfg

Solange ich dieses Paket standardmäßig vor dem Login installiere, brauche ich mir keine Sorgen zu machen, dass Firefox laufen könnte - aber "on demand" schon. Wie kann ich mich hier also galant durch das Problem durchwurschteln?

Schöne Grüße,
SKr

PS.: Hier mein Quelltext

Code: Alles auswählen

[Initial]
SetLogLevel=notice
ExitOnError=false
ScriptErrorMessages=false
FatalOnSyntaxError=true
FatalOnRuntimeError=false
TraceMode=off
requiredWinstVersion >= "4.11.4.6"
StayOnTop=false
AutoActivityDisplay=true

[Actions]
DefVar $LogDir$
DefVar $ProductID$  
DefVar $MinimumSpace$
DefVar $InstallDir$
DefVar $InstallationSwitch$

Set $InstallationSwitch$ = GetProductProperty("strongsecurity", "true")
Set $LogDir$ = "%opsiLogDir%"

; ----------------------------------------------------------------
; - Please edit the following values                             -
; ----------------------------------------------------------------
;$ProductID$ should be the name of the product in opsi
; therefore please: only lower letters, no umlauts, 
; no white space use '-' as a seperator
Set $ProductID$     = "ffconfig"
Set $MinimumSpace$	= "1 MB"
Set $InstallDir$	= "%ProgramFiles32Dir%\Mozilla Firefox"
; the path were we find the product after the installation
; ----------------------------------------------------------------

if not(HasMinimumSpace ("%SystemDrive%", $MinimumSpace$))
	LogError "Not enough free disk space on %SystemDrive%. " + $MinimumSpace$ + " on drive %SystemDrive% needed for " + $ProductID$ +"."
	isFatalError "Disk full" ; Stop process and set installation status to failed
else
	comment "Show product picture"
	ShowBitmap "%ScriptPath%\" + $ProductID$ + ".png" "Firefox Config Stadt Solingen"
	Message "Installing " + $ProductID$ + " ..."
	
	Pause "Bitte beenden Sie Firefox jetzt, falls er laufen sollte, und klicken anschließend auf 'OK'."
	
	WinBatch_Dummy /WaitForProcessEnding "firefox.exe" /TimeOutSeconds 30
	KillTask "firefox.exe"
	comment "Copy configuration files"
	Files_CopyLocalSettings
	
	if ($InstallationSwitch$ = "true")
		Files_CopyLockPref
	else
		Files_CopyDefaultPref
	endif
	
	comment "Check successful installation"
	if not(FileExists($InstallDir$ + "\mozilla.cfg"))
		isFatalError "Installation not successful: mozilla.cfg missing!"
	else
		if not (FileExists($InstallDir$ + "\defaults\pref\local-settings.js"))
			isFatalError "Installation not successful: local-settings.js missing!"
		endif
	endif
endif

[WinBatch_Dummy]
; nothing to do here, just waiting for "firefox.exe" to end

[Files_CopyLocalSettings]
copy %ScriptPath%\local-settings.js $InstallDir$\defaults\pref

[Files_CopyLockPref]
copy %ScriptPath%\lockPref\mozilla.cfg $InstallDir$

[Files_CopyDefaultPref]
copy %ScriptPath%\defaultPref\mozilla.cfg $InstallDir$

Re: Laufende Prozesse durchsuchen?

Verfasst: 28 Apr 2015, 22:06
von holgerv
Hi,

ungetestet, weil ich gerade keinen Windows-Rechner in der Nähe habe:

Code: Alles auswählen

[Actions]
DosInAnIcon_isFirefoxExeRunning
if getLastExitCode = "0"
   message "firefox.exe is running"
else
   message "firefox.exe is not running"
endif

[DosInAnIcon_isFirefoxExeRunning]
tasklist.exe | find "firefox.exe"
exit %ERRORLEVEL%
Vielleicht schreibst Du ja kurz, ob (und ggf. wie) es funktioniert hat.

Schönen Gruß


Holger

Re: Laufende Prozesse durchsuchen?

Verfasst: 28 Apr 2015, 22:13
von SisterOfMercy

Code: Alles auswählen

WinBatch_Dummy /WaitForProcessEnding "firefox.exe" /TimeOutSeconds 30
I think this first waits for the process to start and then end. I could be wrong, but better test this.

I don't think you have to check if firefox is running before you run a killtask command. It will handle itself.

Re: Laufende Prozesse durchsuchen?

Verfasst: 28 Apr 2015, 22:57
von wolfbardo
Hallo,
skranz1982 hat geschrieben:Hallo allerseits!


Hintergrund meiner Frage ist folgender: Wir nutzen das ABO "PatchManagement" und als Zusatz zum Firefox-Paket habe ich ein Paket "ffconfig" geschrieben, dass zwei Dateien im Installationsverzeichnis von Firefox ablegt:

* {Installationsordner}\defaults\pref\local-settings.js
* {Installationsordner}\mozilla.cfg
man kann in den Abo-Paketen auch eigene
custom
Aktionen durchführen:

http://download.uib.de/opsi4.0/doc/html ... s-standard

vgl. für den ersten Punkt
Customizing der Pakete durch preinst/postinst-scripts
bzw.

für die

Code: Alles auswählen

mozilla.cfg
die gleichnamige Property

und den Hinweis

Code: Alles auswählen

/var/lib/opsi/depot/firefox/custom/

Bei erneutem Einspielen des Pakets werden die gefundenen Konfigurationsdateien über preinst-/postinst-Mechanismus erhalten und dann über die Property "mozillacfg" auswählbar.
Gruss
Bardo Wolf

Re: Laufende Prozesse durchsuchen?

Verfasst: 29 Apr 2015, 12:09
von skranz1982
wolfbardo hat geschrieben:Hallo,

man kann in den Abo-Paketen auch eigene
custom
Aktionen durchführen:

http://download.uib.de/opsi4.0/doc/html ... s-standard

vgl. für den ersten Punkt
[..]

Gruss
Bardo Wolf
Hallo Bardo,

diese Funktion habe ich mir auch schon angeschaut,hilft mir aber leider nicht viel: Unser Kunde hat bei uns zwei verschiedene mozilla.cfg-Versionen bestellt, eine restriktive und eine "laissez-faire"-Variante. In meinem o.g. Paket habe ich daher eine Produkteigenschaft "strongsecurity" definiert und nutze diese, um (zur Zeit nur) PC-abhängig auszuwählen, welche Datei ich nun kopiere.

Trotzdem vielen Dank für deinen Link! Hab ich direkt mal als Favorit gespeichert :-)

Re: Laufende Prozesse durchsuchen?

Verfasst: 29 Apr 2015, 12:13
von skranz1982
SisterOfMercy hat geschrieben:

Code: Alles auswählen

WinBatch_Dummy /WaitForProcessEnding "firefox.exe" /TimeOutSeconds 30
I think this first waits for the process to start and then end. I could be wrong, but better test this.

I don't think you have to check if firefox is running before you run a killtask command. It will handle itself.
Hallo SisterOfMercy,

ich denke, da hast du Recht - daher habe ich den Parameter "/TimeOutSeconds 30" angehängt, damit die Routine trotzdem weiter läuft. Ich werde mal weiter basteln und schauen, ob ich das "taskkill" auch allein ausführen kann.

Vielen Dank für deine Antwort!

Re: Laufende Prozesse durchsuchen?

Verfasst: 29 Apr 2015, 12:22
von wolfbardo
Hallo,
skranz1982 hat geschrieben:
Hallo Bardo,

diese Funktion habe ich mir auch schon angeschaut,hilft mir aber leider nicht viel: Unser Kunde hat bei uns zwei verschiedene mozilla.cfg-Versionen bestellt, eine restriktive und eine "laissez-faire"-Variante. In meinem o.g. Paket habe ich daher eine Produkteigenschaft "strongsecurity" definiert und nutze diese, um (zur Zeit nur) PC-abhängig auszuwählen, welche Datei ich nun kopiere.

Trotzdem vielen Dank für deinen Link! Hab ich direkt mal als Favorit gespeichert :-)
Man kann in dem Abo-Paket auch mehrere mozilla.cfg hinterlegen,
also

Code: Alles auswählen

laissez-faire.cfg
strongsecurity
und dann über die Property mozilla.cfg die passende cfg pro Client auswählen,

Gruss
Bardo Wolf

Re: Laufende Prozesse durchsuchen?

Verfasst: 29 Apr 2015, 12:25
von skranz1982
holgerv hat geschrieben:Hi,

ungetestet, weil ich gerade keinen Windows-Rechner in der Nähe habe:

Code: Alles auswählen

[Actions]
DosInAnIcon_isFirefoxExeRunning
if getLastExitCode = "0"
   message "firefox.exe is running"
else
   message "firefox.exe is not running"
endif

[DosInAnIcon_isFirefoxExeRunning]
tasklist.exe | find "firefox.exe"
exit %ERRORLEVEL%
Vielleicht schreibst Du ja kurz, ob (und ggf. wie) es funktioniert hat.

Schönen Gruß


Holger
Hi Holger,
vielen Dank für deine Antwort. Probiere ich mal aus und melde mich dann wieder.

Ciao,
Sebastian