summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Gabriel <mike.gabriel@das-netzwerkteam.de>2023-09-12 16:08:51 +0200
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2023-09-12 16:09:42 +0200
commit0e345f5784f9b26400fa936f86e6c6c1454de161 (patch)
tree8afdc31ddb7f5296b3a7d4ca13ae4d735891573e
parent8206799397bac38a759413927856017324ffdeb6 (diff)
downloaditzks-systems-0e345f5784f9b26400fa936f86e6c6c1454de161.tar.gz
itzks-systems-0e345f5784f9b26400fa936f86e6c6c1454de161.tar.bz2
itzks-systems-0e345f5784f9b26400fa936f86e6c6c1454de161.zip
sbin/itzks-check-ldap-group-not-in-correct-ou: Add script. Analyze LDAP tree and find primary groups that are in the wrong OU.
-rw-r--r--debian/itzks-systems-mainserver.install1
-rwxr-xr-xsbin/itzks-check-ldap-group-not-in-correct-ou57
2 files changed, 58 insertions, 0 deletions
diff --git a/debian/itzks-systems-mainserver.install b/debian/itzks-systems-mainserver.install
index d8efe24..654bef2 100644
--- a/debian/itzks-systems-mainserver.install
+++ b/debian/itzks-systems-mainserver.install
@@ -9,6 +9,7 @@ sbin/itzks-transfer-create usr/sbin/
sbin/itzks-transfer-cleaner usr/sbin/
sbin/itzks-reset-userprofile usr/sbin/
sbin/itzks-puppet-autosign-new-host-certificates usr/sbin/
+sbin/itzks-check-ldap-group-not-in-correct-ou usr/sbin/
usr-lib-nagios-plugins/check_puppetmaster* usr/lib/nagios/plugins/
usr-lib-nagios-plugins/check_squid usr/lib/nagios/plugins/
share/debian-edu-config/tools/gosa-*-itzks usr/share/debian-edu-config/tools/
diff --git a/sbin/itzks-check-ldap-group-not-in-correct-ou b/sbin/itzks-check-ldap-group-not-in-correct-ou
new file mode 100755
index 0000000..5a1057f
--- /dev/null
+++ b/sbin/itzks-check-ldap-group-not-in-correct-ou
@@ -0,0 +1,57 @@
+#!/bin/sh
+
+# Copyright (C) 2023 by Mike Gabriel <mike.gabriel@it-zukunft-schule.de>
+
+# This script is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This script is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the
+# Free Software Foundation, Inc.,
+# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+OUTPUT_CMD=${OUTPUT_CMD:-cat}
+
+set -e
+
+ldapsearch -xLLL "(&(uid=*)(objectClass=posixAccount)(!(objectClass=gosaUserTemplate)))" \
+ dn uid 2>/dev/null | perl -p0e 's/\n //g' | \
+while read KEY VALUE ; do
+ case "$KEY" in
+ dn:) UID=; USERDN="$VALUE" ;;
+ dn::) UID=; USERDN="$(echo $VALUE | base64 -d)" ;;
+ uid:) UID="$VALUE" ;;
+ "")
+ ldapsearch -xLLL "(&(cn=$UID)(objectClass=posixGroup))" \
+ dn 2>/dev/null | perl -p0e 's/\n //g' | \
+ while read G_KEY G_VALUE ; do
+ case "$G_KEY" in
+ dn:) GROUPDN="$G_VALUE" ;;
+ dn::) GROUPDN="$(echo $G_VALUE | base64 -d)" ;;
+ "")
+ U_BASEDN=$(echo $USERDN | cut -d"," -f3-)
+ G_BASEDN=$(echo $GROUPDN | cut -d"," -f3-)
+
+ if [ "${U_BASEDN}" != "${G_BASEDN}" ]; then
+ (
+ echo "${USERDN}"; \
+ echo "${GROUPDN} -> ${U_BASEDN}"; \
+ echo; ) | ${OUTPUT_CMD}
+
+ fi
+
+ ;;
+ esac
+ done
+ ;;
+ esac
+done
+
+exit 0