Files
2026-02-16 15:05:15 +01:00

87 lines
3.0 KiB
Bash

#!/bin/bash
##########################################################################
# Shellscript : Prüft, ob das Ticket das eigene ist.
# Autor : Andreas Vogel, macenterprise gmbh, 13.11.2019
##########################################################################
########################### Description ##################################
# Script dient dazu, dass der User sich nicht über das Nomad eine Kerberos Ticket anfragt.
# Das Script wird über einen Daemon gestartet.
# Das Script wird zunächst prüfen, ob das AD erreichbar ist.
# Ist das AD erreichbar wird geprüft, ob eine Ticket bereits vorhanden ist. Ist kein Ticket
# Im TicketViewer hinterlegt, so wird der User nach seinem Passwort gefragt. Der User-Name wird
# über das System ausgelesen. Nach der Eingabe der Passwortes, wird eine Kerberos Ticket angefragt
# und im TicketViewer hinterlegt. Der User hat nur die Möglichkeit sein eigenes Ticket an zu fragen.
# Als nächstes Prüft das Script, ob das hinterlegte Ticket auf dem User, gemäß des Benutzernames
# auch gehört. Gehört das Ticket nicht dem Benutzer, so wird dieses sofort gelöscht und der User
# wird darüber informiert. Nach der Information, wird eine Event über Jamf ausgelöst.
# Dabei wird der Befehl " sudo jamf -event TicketCheck ausgeführt.
# Mit der Ausführung der Policy wird damit eine Log zu dem Gerät erstellt.
# Damit wird die Möglichkeit eines Reporten geschaffen. Somit kann zum Zwecke eines Report
# in Jamf 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.
# Die Prüfung, ob das Ticket dem User auch gehört ist daher notwendig, da der User auch eine Ticket über
# das Termin oder auch über den TocketViwer anfragen kann.
ADBound=$(dsconfigad -show | awk '/Active Directory Domain/{print $NF}')
user=$(stat -f '%u %Su' /dev/console | cut -d ' ' -f 2)
TicketIs=$(klist --list-all | grep DIBA.CORP.INT | cut -d ' ' -f 2)
Domain=@DIBA.CORP.INT
name=$user$Domain
AD_ING="diba.corp.int"
AD_STAT=$(dsconfigad -show | awk '/Active Directory Domain/{print $NF}')
ping -c1 $AD_ING 1>/dev/null 2>/dev/null
SUCCESS=$?
if [[ "$AD_STAT" = "$AD_ING" && $SUCCESS -eq 0 ]]
then
if [[ ! -z "$TicketIs" ]]
then
if [[ $name == $TicketIs ]]
then
exit 0
else
touch ~/Desktop/test.sh
jamf policy -event TicketReport
kdestroy -p $TicketIs
fi
else
user=$(stat -f '%u %Su' /dev/console | cut -d ' ' -f 2)
PASS=$(osascript -e 'text returned of (display dialog "Bitte das Passwort eingeben" default answer "" with hidden answer)') || exit
FILE=$(cat /dev/urandom | env LC_CTYPE=C tr -cd 'a-f0-9' | head -c 8)
PFILE=/Users/$user/.$FILE
touch $PFILE
echo "$PASS" >> $PFILE
if kinit --password-file="$PFILE" $user@DIBA.CORP.INT
then
rm $PFILE
exit 0
else
rm $PFILE
exit 1
fi
exit 0
fi
else
exit 0
fi