shell nextcloud datei formatieren

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Tealk
Beiträge: 24
Registriert: 22.11.2010 19:55:08

shell nextcloud datei formatieren

Beitrag von Tealk » 25.09.2019 13:15:37

Hallo zusammen,

ich habe mir ein kleines Script zusammen gestellt das mir die gelöschten LDAP User aus der Nextcloud löscht. Leider muss ich da noch etwas per hand nacharbeiten was ich gern automatisieren würde.
Und zwar bekomme ich mit folgendem Befehl "occ ldap:show-remnants > /home/ldap.txt" diese liste:

Code: Alles auswählen

+--------------------------------------+--------------------------+------------------+----------------------------------------------------------------+--------------------+--------------------+-----+--------+
| Nextcloud name                       | Display Name             | LDAP UID         | LDAP DN                                                        | Last Login         | Detected on        | Dir | Sharer |
+--------------------------------------+--------------------------+------------------+----------------------------------------------------------------+--------------------+--------------------+-----+--------+
| 08d8d57c-57c0-1032-93ea-a1d98e73198e |                          |                  | uid=xx,ou=xx,dc=mmmgroup,dc=com                 | -                  | unknown            |     | N      |
| 723f711e-57c1-1032-93f4-a1d98e73198e |                          |                  | uid=xx,ou=xx,dc=mmmgroup,dc=com                | -                  | unknown            |     | N      |
| cf2904f4-57c0-1032-93f0-a1d98e73198e |                          |                  | uid=xx,ou=xx,dc=mmmgroup,dc=com               | -                  | unknown            |     | N      |
+--------------------------------------+--------------------------+------------------+----------------------------------------------------------------+--------------------+--------------------+-----+--------+
in der Liste sind aktuell 143 Einträge.

Ich brauche aus der Liste nur die Einträge der Spalte "Nextcloud name ", weiß aber nicht wie ich diese automatisch formatieren und abspeichern kann.
Zuletzt geändert von Tealk am 25.09.2019 14:28:02, insgesamt 1-mal geändert.

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

Re: shell nextcloud datei formatieren

Beitrag von MSfree » 25.09.2019 13:47:10

Code: Alles auswählen

awk '{if( NF==14 ) print $2}' /home/ldap.txt

Tealk
Beiträge: 24
Registriert: 22.11.2010 19:55:08

Re: shell nextcloud datei formatieren

Beitrag von Tealk » 25.09.2019 14:29:21

MSfree hat geschrieben: ↑ zum Beitrag ↑
25.09.2019 13:47:10

Code: Alles auswählen

awk '{if( NF==14 ) print $2}' /home/ldap.txt
Danke für den Hinweis, aber von meinen 143 Einträgen bekomme ich dann nur 23 ausgegeben
Und wärst du so gut mir zu erklären was es macht? Weil ich steig gerade nicht dahinter.

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

Re: shell nextcloud datei formatieren

Beitrag von MSfree » 25.09.2019 14:41:08

Tealk hat geschrieben: ↑ zum Beitrag ↑
25.09.2019 14:29:21
Und wärst du so gut mir zu erklären was es macht?
awk liest die Eingabedatei (in diesem Fall /home/ldap.txt) und prozessiert sie Zeile für Zeile. NF ist dabei die Number of Fields , die in der Zeile gefunden wurden. Dein Beispiel oben hat 14 Felder für die Zeilen geliefert, die die UID enthalten. Daher habe ich gesagt, daß awk bei einem Zeile mit 14 Feldern das Zweite Feld ausgeben soll.

Du könntest auch prüfen ob das erste und das dritte Feld jeweils "|" sind und dann das zweite Feld ausgeben.

Lese dir bitte mal man awk durch, da ist das ganz gut erklärt.

Benutzeravatar
hikaru
Moderator
Beiträge: 13594
Registriert: 09.04.2008 12:48:59

Re: shell nextcloud datei formatieren

Beitrag von hikaru » 25.09.2019 14:59:18

@MSfree:
Deine Lösung ist zwar einfach, aber offensichtlich nicht sehr robust, denn du verlässt dich darauf, dass jede Zeile mit 14 Feldern in Feld 2 eine UUID enthält.
Ich kenne diese LDAP-Ausgabe nicht, aber deine Annahme scheint nicht korrekt zu sein, wenn ich Tealks Aussage richtig verstehe.

Ich halte es generell für eine schlechte Idee, Inhalte nur auf der Basis von umgebender Formatierung zu extrahieren.
Warum nicht direkt die UUIDs aus der Datei grepen?:

Code: Alles auswählen

egrep -o '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' ldap.txt
Das soll nur ein einfaches Beispiel sein. Darin steckt die Annahme, dass keine ungewünschten UUIDs in der Datei stecken (z.B. im "LDAP DN"-Feld). Da ich das Format der Datei nicht kenne würde ich im Ernstfall entweder das Format studieren um False Positives konzeptuell auszuschließen, oder falls das nicht möglich ist, mein einfaches grep entsprechend aufbohren, um sicherzustellen, dass z.B. nur UUIDs in der "Nextcloud name"-Spalte matchen.

Tealk
Beiträge: 24
Registriert: 22.11.2010 19:55:08

Re: shell nextcloud datei formatieren

Beitrag von Tealk » 25.09.2019 15:08:22

@MSfre ja hab mir das schon ein wenig durchgelesen aber das mit dem NF habe ich nicht ganz überrissen. Danke für den Lösungsansatz.

@hikaru danke für den Input, genau das habe ich gesucht und es funktioniert wunderbar. :hail:
Zuletzt geändert von Tealk am 25.09.2019 15:24:23, insgesamt 1-mal geändert.

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

Re: shell nextcloud datei formatieren

Beitrag von MSfree » 25.09.2019 15:11:15

hikaru hat geschrieben: ↑ zum Beitrag ↑
25.09.2019 14:59:18
Deine Lösung ist zwar einfach, aber offensichtlich nicht sehr robust, denn du verlässt dich darauf, dass jede Zeile mit 14 Feldern in Feld 2 eine UUID enthält.
Ja, das war ein Schnellschuß. Ich würde eigentlich erstmal nachforschen, ob man die verwaisten UIDs nicht mit occ ausgeben kann, ohne daß das tabelarisch mit ASCII-Art formatiert ist, also etwas, das sich leichter parsen läßt.

Tealk
Beiträge: 24
Registriert: 22.11.2010 19:55:08

Re: shell nextcloud datei formatieren

Beitrag von Tealk » 25.09.2019 16:02:19

MSfree hat geschrieben: ↑ zum Beitrag ↑
25.09.2019 15:11:15
hikaru hat geschrieben: ↑ zum Beitrag ↑
25.09.2019 14:59:18
Deine Lösung ist zwar einfach, aber offensichtlich nicht sehr robust, denn du verlässt dich darauf, dass jede Zeile mit 14 Feldern in Feld 2 eine UUID enthält.
Ja, das war ein Schnellschuß. Ich würde eigentlich erstmal nachforschen, ob man die verwaisten UIDs nicht mit occ ausgeben kann, ohne daß das tabelarisch mit ASCII-Art formatiert ist, also etwas, das sich leichter parsen läßt.
Leider habe ich da nichts gefunden, es ist ja auch ein Abgleich vom LDAP und der Nextcloud DB

docsymbiosis
Beiträge: 1
Registriert: 17.12.2018 15:05:05

Re: shell nextcloud datei formatieren

Beitrag von docsymbiosis » 03.10.2019 22:41:13

Es gibt ja zumindest das ganze json-formatiert:

Code: Alles auswählen

occ ldap:show-remnants --json
Das kannst Du ordentlich parsen.

Antworten