Files
Alte_Skripte/de.ing.Create_Daemon_Allow_only_one_Kerberos_Ticket Time 10 sec MOD.
2026-02-16 15:05:15 +01:00

108 lines
3.2 KiB
Bash

#!/bin/bash
##########################################################################
# Shellscript : Check Ticket und Launch Daemon
# Quelle :
# Autor : Andreas Vogel, macenterprise gmbh
# Copyright : macenterprise 2019
##########################################################################
# Erstellung XML
read -d '' launchDaemons <<"EOF"
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Disabled</key>
<false/>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>de.ing.check_ticket</string>
<key>ProgramArguments</key>
<array>
<string>/Library/Application Support/JAMF/ING/check_ticket.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StartInterval</key>
<integer>10</integer>
</dict>
</plist>
EOF
# XML schreiben
echo "$launchDaemons" > /Library/LaunchDaemons/de.ing.check_ticket.plist
# Rechte setzen
chmod 644 /Library/LaunchDaemons/de.ing.check_ticket.plist
chown root:wheel /Library/LaunchDaemons/de.ing.check_ticket.plist
# Erstellung startup script
read -d '' startupscript<<"EOF"
#!/bin/bash
##########################################################################
# Shellscript : Prüft, ob das Ticket das eigene ist.
# Autor : Andreas Vogel, macenterprise gmbh, 13.11.2019
##########################################################################
########################### Description ##################################
# Das Script wird über einen Daemon gestartet.
# Das Script prüft, ob das hinterlegte Ticket dem User, gemäß des Benutzernames
# gehört. Gehört das Ticket nicht dem Benutzer wird ein Event über Jamf ausgelöst.
# Dabei wird der Befehl " sudo jamf -event TicketCheck ausgeführt.
# Mit der Ausführung der Policy wird damit ein Logfile zu dem Gerät erstellt.
# Damit wird die Möglichkeit eines Report geschaffen.
# In Jamf kann eingesehen werden, wie oft diese Policy ausgeführt worden ist. Über den Log, kann
# eingesehen werden, als welcher Benutzer der User versucht hatte sich ein Ticket zu beziehen.
# Der User kann auch ein Ticket über das Terminal oder über den TicketViwer anfragen.
#Variablen
#eingeloggter User
USER=$(stat -f '%u %Su' /dev/console | cut -d ' ' -f 2)
#Kerberos REALM
REALM="DIBA.CORP.INT"
#Prüfung auf fremdes Ticket
TICKET=$(klist -l | grep $REALM | awk -F@ {'print $1'} | tr -d '* ' | awk -F$USER {'print $1'} | awk 'NF')
#Prüfung .REPORT
REPORT="/Library/Application Support/JAMF/ING/.report"
#Test Vorhandensein .REPORT
if [[ -f "/Library/Application Support/JAMF/ING/.report" ]]
then
rm "/Library/Application Support/JAMF/ING/.report"
fi
#Test ob "fremdes" Ticket vorhanden
#dann SHUTDOWN
if [[ -n $TICKET ]]
then
touch "/Library/Application Support/JAMF/ING/.report"
/usr/local/bin/jamf policy -event TicketReport
#fdesetup remove -user $USER
#shutdown -h now
fi
EOF
# script schreiben
echo "$startupscript" > /Library/Application\ Support/JAMF/ING/check_ticket.sh
# Rechte setzen
/bin/chmod u+x /Library/Application\ Support/JAMF/ING/check_ticket.sh
# LaunchAgent laden
launchctl unload /Library/LaunchDaemons/de.ing.check_ticket.plist
launchctl load /Library/LaunchDaemons/de.ing.check_ticket.plist
exit 0