Im Zuge einer Projektarbeit (Aufsetzten eines OSX Update-Servers) musste ein Skirpt her, mit dem man kurzfristig die Adressen des lokalen Updates-Servers eintragen lassen kann. Das ist an sich nicht schwierig und lässt sich auch über einen Terminal-Befehl leicht erreichen. Das ganze soll nur möglichst einfach ablaufen und sich auch Rückgängig machen lassen, damit der lokale Update-Server nur verwendet wird, wenn das Programm auch läuft… also:
Das Skript hier einfach als Anwendung speicher, die nach dem Öffnen auch offen bleibt. Der Wert der Variable myupdate_server_ip sollte natürlich entsprechende IP des Update-Server gesetzte werden.
### 09.02.2014 © hubionmac.com
### AppleScript welches den Update-Server eines Macs für die Dauer der Laufzeit verändert und beim Beendet wieder auf den Default-Wert zurücksetzt
### Der Defaults Befehlt stammt von http://support.apple.com/kb/ht4069
##Voreinstellung, das ist die IP oder der Domain-Name des Update-Servers
property myupdate_server_ip : "192.168.1.1"
on run
##Wenn der Dialog mit Ja bestätigt wird geht es weiter, ansonsten beendet sich das Programm
set doit to button returned of (display alert "Soll ich den Update-Server (" & myupdate_server_ip & ") eintragen?" buttons {"Nein", "Ja"} default button {"Ja"}) as text
if doit is "Ja" then
try
##das ist die eigentliche Code Zeile über die der Update-Server definiert wird
do shell script "defaults write /Library/Preferences/com.apple.SoftwareUpdate CatalogURL http://" & myupdate_server_ip & ":8088/index.sucatalog" with administrator privileges
##Sofern der vorherige Eintrage erfolgreich war, müsste diese Befehl ohne Fehler durchlaufen
do shell script "defaults read /Library/Preferences/com.apple.SoftwareUpdate CatalogURL"
##Das ist ein reiner Info Dialog ohne weitere Funktion… verschwindet nach 5 Sekunden
display alert "Update Server eingetragen, beende das Programm, um den Eintrag wieder zu löschen…" buttons {"OK"} default button {"OK"} giving up after 5
on error msg
##Sollte es einen Fehler gegegeben haben (z.B. die Voreinstellung wurde nicht gesetzt, wird dieser angezeigt und das Programm beendet...
display alert "Es scheint ein Problem setzen der Voreinstellung gegeben zu haben…\n\n" & msg
quit
end try
else
##Wenn der Anfangs-Dialog mit nein bestätigt wurde, beendet sich das Programm halt...
tell me to quit
end if
end run
##Routine die beim Beendetn des Skript-Programmes durchlaufen wird
on quit
##es wird versucht die gesetzte Voreinstellung wieder zur löschen… kommt es zu einem Fehler, wird dieser angezeigt und das Programm beendet sich trotzdem...
try
do shell script "sudo defaults delete /Library/Preferences/com.apple.SoftwareUpdate CatalogURL" with administrator privileges
display alert "Update-Server wieder zurück auf default" giving up after 5
on error msg
display alert msg
end try
continue quit
end quit
Und sobald das Programm nun läuft, wir nach dem Kennwort gefragt, der Update-Server umgestellt und wenn man es beendet ist alles wieder auf Anfang gesetzt. Ist super praktisch, wenn man nur zeitweise den lokalen Update-Server nutzen möchte, z.B. bei mobilen Geräten, die nicht immer im lokalen Netzwerk verbleiben. Danke an Dennis für die Grund-Idee.