Files
Andreas Vogel 306149a726 test
2026-02-16 15:28:29 +01:00

327 lines
10 KiB
Bash
Executable File

#!/bin/bash
##########################################################################
# Shellscript : Skript für Set default Desktop erstellen
# Autor : Andreas Vogel, NEXT enterprise gmbh, 2021
##########################################################################
#Das Skript erstellt unter "/usr/local/scripts/" ein Skript. Dieses Skript
#prüft unter "/usr/local/scripts/defaults/" ob Skripte zur Ausführung ligen
#und führt diese aus.
#
#Aktuell werden die folgenden Skripte erstellt:
#
#1. Scriptrunner -> startet die restlichen Skripte
#2. $Set_Dock -> ändert den Dock (Ohne eine zusätzliche Binary.) !!Sudo erforderlich!! z.B. Deamon
#3. default_desktop -> ändert den Desktop auf allen angeschlossenen Displays. (Ohne eine zusätzliche Binary)
#
#Für das ändern des Docks sowie Desktop sind auf Github binarys verfügbar. Jedoch ist hier das Ziel, das
#Systemdefault soweit wie es möglich ist zu nutzen, um hier keine Abhängigkeit zu haben.
######################## prüfen Zielordner ###############################
Directory="/usr/local/scripts/defaults"
if [ -d "$Directory" ]
then
echo "gefunden"
else
echo "nichts da"
mkdir -p /usr/local/scripts/defaults
chmod 777 /usr/local/scripts/defaults
fi
######################## Skript ScriptRunner ##################################
read -d '' Start_Scriptrunner<<"EOB"
#!/bin/bash
##########################################################################
# Shellscript : Ausführen der Skripte
# Autor : Andreas Vogel, macenterprise gmbh
# Copyright : macenterprise 2020
##########################################################################
####################### Variabel #########################################
# wer ist eingelogt
LOGGEDINUSER=$(stat -f '%u %Su' /dev/console | cut -d ' ' -f 2)
# wo liegen die Skripte
SCRIPTDIR="/usr/local/scripts/defaults"
SCRIPTS=$(find "$SCRIPTDIR" -name "*.sh")
# wie ist es gelaufen
RESULTS="/Users/$LOGGEDINUSER/Library/Logs/LoginScript.log"
AGENT=/Users/$LOGGEDINUSER/Library/LaunchAgents/de.ing.config_defaults.plist
####################### alle Skripts ausführen ###########################
exec >> $RESULTS
exec 2>&1
DATE=$(DATE)
echo "==== Start ${DATE} ===="
if [[ "$SCRIPTS" == "" ]]
then
DATE=$(DATE)
echo "$DATE - Es wurden keine Skripte am Ziel gefunden $SCRIPTDIR"
else
for SCRIPT in $SCRIPTS
do
DATE=$(DATE)
echo "$DATE - Skript $SCRIPT wird gestartet......"
/bin/sh "$SCRIPT"
DATE=$(DATE)
echo "$DATE - Skript wurde ausgeführt"
done
fi
DATE=$(DATE)
echo "==== End ${DATE} ===="
####################### LauchAgent löschen ###############################
rm $AGENT
EOB
echo "$Start_Scriptrunner" > /usr/local/scripts/de.ing.scriptrunner.sh
######################## Skript Dock ##################################
read -d '' Set_Dock<<"EOC"
#!/bin/bash
##########################################################################
# Shellscript : Set default Dock
# Autor : Andreas Vogel, macenterprise gmbh, 2020
##########################################################################
set -x
########################### Remove Items ###############################################
/usr/local/bin/jamf modifyDock -id 9 -remove -leaveRunning # Mail
/usr/local/bin/jamf modifyDock -id 17 -remove -leaveRunning # FaceTime
/usr/local/bin/jamf modifyDock -id 16 -remove -leaveRunning # Messages
/usr/local/bin/jamf modifyDock -id 14 -remove -leaveRunning # Maps
/usr/local/bin/jamf modifyDock -id 15 -remove -leaveRunning # Photos
/usr/local/bin/jamf modifyDock -id 32 -remove -leaveRunning # Musik
/usr/local/bin/jamf modifyDock -id 29 -remove -leaveRunning # Podcasts
/usr/local/bin/jamf modifyDock -id 6 -remove -leaveRunning # TV
/usr/local/bin/jamf modifyDock -id 18 -remove -leaveRunning # App Store
########################### Add Items ###############################################
/usr/local/bin/jamf modifyDock -id 1 -beginning
sleep 5
EOC
echo "$Set_Dock" > /usr/local/scripts/defaults/de.ing.set_default_dock.sh
######################## Skript Desktop ##################################
read -d '' Set_Desktop_sh<<"EOD"
#!/bin/bash
##########################################################################
# Shellscript : Set_default_Desktop Part I .sh
# Part II de.ing.set_default_desktop.py
# Autor : Andreas Vogel, macenterprise gmbh
##########################################################################
set -x
python /usr/local/scripts/defaults/de.ing.set_default_desktop.py
EOD
echo "$Set_Desktop_sh" > /usr/local/scripts/defaults/de.ing.set_default_desktop.sh
read -d '' Set_Desktop_py<<"EOD"
#!/usr/bin/python
'''Uses Cocoa classes via PyObjC to set a random desktop picture on all screens.
Tested on Mountain Lion and Mavericks.
See:
https://developer.apple.com/library/mac/documentation/cocoa/reference/applicationkit/classes/NSWorkspace_Class/Reference/Reference.html
https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/Reference/Reference.html
https://developer.apple.com/library/mac/documentation/cocoa/reference/applicationkit/classes/NSScreen_Class/Reference/Reference.html
'''
import glob
import random
from AppKit import NSWorkspace, NSScreen
from Foundation import NSURL
pictures_glob = glob.glob("/Library/Application Support/JAMF/ING/*.jpg")
picture_path = "/Library/Application Support/JAMF/ING/default_desktop.jpg"
# generate a fileURL for the desktop picture
file_url = NSURL.fileURLWithPath_(picture_path)
# make image options dictionary
# we just make an empty one because the defaults are fine
options = {}
# get shared workspace
ws = NSWorkspace.sharedWorkspace()
# iterate over all screens
for screen in NSScreen.screens():
# tell the workspace to set the desktop picture
(result, error) = ws.setDesktopImageURL_forScreen_options_error_(
file_url, screen, options, None)
if error:
print error
exit(-1)
EOD
echo "$Set_Desktop_py" > /usr/local/scripts/defaults/de.ing.set_default_desktop.py
######################## Skript Proxy/Preproxy ###########################
read -d '' Setup_Proxysettings<<"EOE"
#!/bin/sh
##########################################################################
# Shellscript : Setup Proxy und Preproxy Settings
# Autor : Andreas Vogel, NEXT Enterprise gmbh
##########################################################################
#creating configuration profile for preproxy.app
printf '\n%s\n''Creating PreProxy configuration'
cat << \EOF > /tmp/preproxy-config.json
{
"LocalPort" : 8079,
"UseProxyAutoConfiguration" : true,
"ProxyAutoConfigurationURL" : "http://ppacnew.corp.int/proxy.pac",
"RemoteHost" : "",
"RemotePort" : 8080,
"SetUsername" : "",
"SetPassword" : "",
"SetAutostart" : true,
"AllowBasicMethod" : false,
"KerberosPrincipal" : "",
"KerberosHost" : "",
"KerberosService" : "",
"NTLMWorkstation" : "",
"NTLMDomain" : ""
}
EOF
# kill preproxy if running
PROCESS=Preproxy
number=$(ps aux | grep $PROCESS | wc -l)
if [ $number = 2 ]
then
echo $PROCESS Running
killall $PROCESS
echo $PROCESS killed
fi
# setting config
/usr/bin/open -gnW -a /Applications/Preproxy.app /tmp/preproxy-config.json
printf '\n%s\n''Written PreProxy configuration'
#set time zone & time server
#Use "/usr/sbin/systemsetup -listtimezones" to see a list of available list time zones.
printf '\n%s\n''Setting location settings'
TimeZone="Europe/Berlin"
TimeServer="gf01yntp21.corp.int"
#set network time to be on
/usr/sbin/systemsetup -setusingnetworktime on
printf '\n%s\n''use Network time set'
#Set an initial time zone
/usr/sbin/systemsetup -settimezone $TimeZone
printf '\n%s\n''Timezone set'
#Set specific time server
/usr/sbin/systemsetup -setnetworktimeserver $TimeServer
printf '\n%s\n''Timeserver set'
#cleaning up files
rm -rf /tmp/*.json
#opening applications to enrol device
open -a preproxy
# set Mac's proxy
IFS=$'\n'
unset GLOBIGNORE
locations=($(networksetup -listlocations))
#echo $locations
echo "${locations[@]}"
default=$(networksetup -getcurrentlocation)
for target in "${default[@]}"; do
for i in "${!locations[@]}"; do
if [[ ${locations[i]} = $target ]];
then
unset 'locations[i]'
fi
done
done
echo "${locations[1]}"
for i in "${locations[@]}"; do
networksetup -deletelocation "$i" 1> /dev/null
echo "Netzwerk-Umgebung" "$i" "wurde gelöscht"
done
# Detects all network hardware & creates services for all installed network hardware
/usr/sbin/networksetup -detectnewhardware
/usr/sbin/networksetup -createnetworkservice "USB 10/100/1000 LAN" "USB 10/100/1000 LAN"
/usr/sbin/networksetup -createnetworkservice "Wi-Fi" "Wi-Fi"
/usr/sbin/networksetup -createnetworkservice "Thunderbolt Bridge" "Thunderbolt Bridge"
/usr/sbin/networksetup -createnetworkservice "Thunderbolt Ethernet Slot 1" "Thunderbolt Ethernet Slot 1"
ProxyURL="127.0.0.1"
ProxyPort="8079"
BypassURL="lionsportal-mac.ing-diba.de"
BypassURL_2="lionsportal-mac-qa.ing-diba.de"
#Loops through the list of network services
for i in $(networksetup -listallnetworkservices | tail +2 );
do
# Enable http proxy
/usr/sbin/networksetup -setwebproxy "$i" "$ProxyURL" "$ProxyPort"
echo "Turned on http proxy for $i"
# Enable https proxy
/usr/sbin/networksetup -setsecurewebproxy "$i" "$ProxyURL" "$ProxyPort"
echo "Turned on https proxy for $i"
# Set proxy bypass domain
/usr/sbin/networksetup -setproxybypassdomains "$i" "$BypassURL" "$BypassURL_2"
echo "Turned on bypass url for $i"
# Disable IPv6
/usr/sbin/networksetup -setv6off "$i"
echo "Turned off ipv6 for $i"
done
unset IFS
exit 0;
EOE
echo "$Setup_Proxysettings" > /usr/local/scripts/defaults/de.ing.set_Proxy_Preproxy.sh
######################## Skripte Berechtigungen ###########################
/usr/sbin/chown root:wheel "/usr/local/scripts/de.ing.scriptrunner.sh"
/bin/chmod 755 "/usr/local/scripts/de.ing.scriptrunner.sh"
/usr/sbin/chown root:wheel "/usr/local/scripts/defaults/de.ing.set_default_desktop.sh"
/bin/chmod 755 "/usr/local/scripts/defaults/de.ing.set_default_desktop.sh"
/usr/sbin/chown root:wheel "/usr/local/scripts/defaults/de.ing.set_default_desktop.py"
/bin/chmod 755 "/usr/local/scripts/defaults/de.ing.set_default_desktop.py"
/usr/sbin/chown root:wheel "/usr/local/scripts/defaults/de.ing.set_default_dock.sh"
/bin/chmod 755 "/usr/local/scripts/defaults/de.ing.set_default_dock.sh"
/usr/sbin/chown root:wheel "/usr/local/scripts/defaults/de.ing.set_Proxy_Preproxy.sh"
/bin/chmod 755 "/usr/local/scripts/defaults/de.ing.set_Proxy_Preproxy.sh"