ich stehe hier vor einer kleinen Herausforderung. Leider bin ich absoluter Neuling was Python angeht.
Ich habe hier ein Script welches in Python geschrieben ist. Ich habe es als Template von Github und dieses Template ist genau für dieses Szenario geschrieben (es ist ein Community Script für das Tool was ich nutze).
Folgende Situation:
Ich habe auf meinem Mac unter dem Pfad
Code:
/Library/Preferences/
Code:
ManagedInstalls.plist
Code:
ManagedMunkiServer.plist
Nun kommt das Script zum Einsatz: Dieses Script läuft als Preflight Script vor jeder Ausführung des Tools und sieht wie folgt aus:
Code:
#!/usr/bin/python import sys import os sys.path.append('/usr/local/munki') from munkilib import updatecheck from munkilib import FoundationPlist #Dynamic Config Munki Preflight Script by John Rozewicki #2010-12-08 # #Script merges config from Munki repo into local config if newer. RepoURL = "http://myserver" ConfigName = "ManagedInstalls.plist" ServerConfigName = "ManagedMunkiServer.plist" ConfigDir = "/Library/Preferences" ConfigPath = os.path.join(ConfigDir, ConfigName) ServerConfigURL = os.path.join(RepoURL, ServerConfigName) ServerConfigPath = os.path.join(ConfigDir, ServerConfigName) def MergePlists(FromPlist, ToPlist): FromPlistData = FoundationPlist.readPlist(FromPlist) ToPlistData = FoundationPlist.readPlist(ToPlist) for item in FromPlistData: ToPlistData[item] = FromPlistData[item] FoundationPlist.writePlist(ToPlistData, ToPlist) if (sys.argv[1] != "logoutinstall") and (sys.argv[1] !="installwithnologout"): os.system("touch Users/Shared/.com.googlecode.munki.checkandinstallatstartup") print "Checking for new %s" % (ServerConfigName) if updatecheck.getResourceIfChangedAtomically(ServerConfigURL, ServerConfigPath): Merging new server settings into configuration." MergePlists(ServerConfigPath, ConfigPath)
erwartetes verhalten:
Das preflight Script checkt die SHA-checksum von
Code:
ManagedMunkiServer.plist
Code:
/Library/Preferences/
Code:
/Library/Preferences/ManagedInstalls.plist
Code:
/Library/Preferences/ManagedMunkiServer.plist
wird die Datei Auf dem Server geändert, so sollte das Script beim nächsten ausführen sehen dass sich die Checksum geändert hat und die Datei auf dem Lokalen Pfad /Library/Preferences/ManagedMunkiServer.plist anpassen. dann erneut beide Dateien vergleichen und die Änderungen auf die Datei ManagedInstalls.plist überschreiben.
_______________________________
IST-Zustand:
Bei der ersten Ausführung funktioniert alles wie es soll. Ändere ich nun die Datei auf dem Server und das Script wird erneut ausgeführt, dann erkennt es, dass die Checksum der Datei auf dem Server sich geändert hat und aktualisiert die Datei
Code:
/Library/Preferences/ManagedMunkiServer.plist
Code:
/Library/Preferences/ManagedInstalls.plist
Ich hoffe ich habe das ausreichend Verständlich erklärt.
Falls nicht dürft ihr mich gerne drauf hinweisen, aber diejenigen die sich mit Python auskennen, sollten verstehen was die Aufgabe des Scriptes ist.
Hat jemand eine Idee warum die Änderungen im letzten Schritt nicht auf die Eigentliche Datei geschrieben werden, oder kann mir einen Hinweis geben wo ich suchen sollte?
VG