Ja ... also 🙂 ich habe zum Test die Oranisation mal wieder angelegt um zu sehen was passiert. Mein Fazit: Das kann so nicht klappen und es fehlen Informationen. Die Doku ist zum Thema "grommunio-admin query domain" leider nichts sagend und ohne Beispiele. Zu den Details. Hier erst mal der "Einzeiler" in Script-Form und lesbar:
DOM=$(grommunio-admin query domain domainname)
ID=$(mysql -N grommunio <<< "select org_id from domains where domainname=\"$domain\";")
grommunio-admin ldap downsync -o $ID --complete
Zunächst zum Test die erste Zeile so wie sie ist aufgeführt gibt:
test:~ # grommunio-admin query domain domainname
usage: grommunio-admin [-h]
{config,connect,dbconf,domain,exmdb,fetchmail,fs,ldap,mconf,mlist,passwd,run,server,service,shell,shrek,taginfo,user,version}
...
invalid choice: 'query' (choose from 'config', 'connect', 'dbconf', 'domain', 'exmdb', 'fetchmail', 'fs', 'ldap', 'mconf', 'mlist', 'passwd', 'run', 'server', 'service', 'shell', 'shrek', 'taginfo', 'user', 'version')
Auch wenn man "domainname" durch etwas existierendes ersetzt funktioniert es nicht. Ein bisschen Recherche zeigt, dass das verdreht ist. Es muss heissen:
grommunio-admin domain query
Das liefert eine Liste. Das legt nahe, dass das eigentlich ein Schleife sein sollte. Mit dem Output kann man aber auf der Shell so direkt nichts anfangen. Leider steht in der Doku nirgends (oder ich finde es nur nicht ...) wie man mit dem Parameter "-format" etwas passendes erreichen könnte. Geht bestimmt.
Zur nächsten Zeile.
ID=$(mysql -N grommunio <<< "select org_id from domains where domainname=\"$domain\";");
Hier wird sich auf "$domain" bezogen, das ist aber nirgends definiert. Ich könnte mir vorstellen dass das "$DOM" aus der ersten Zeile gemeint ist. Des weiteren wird aber $DOM nicht mehr genutzt. Wo zu dient dann die Query? 🙂 Setze ich für "$domain" einen passenden Domain-Namen ein bekomme ich eine ID. Setze ich diese dann in
grommunio-admin ldap downsync -o 2 --complete
ein, läuft das ohne Fehler.
Durch ausprobieren habe ich das mit "-format" dann doch herausgefunden. So geht das dann, wenn es mehr als eine Domain gibt:
#!/bin/bash
for domain in $(grommunio-admin domain query -format domainname)
do
ID=$(mysql -N grommunio <<< "select org_id from domains where domainname=\"$domain\";")
grommunio-admin ldap downsync -o $ID --complete
done
Das läuft dann sauber durch. Geht natürlich auf einer Zeile wenn es denn sein muss 🙂
test:~ # rpm -qa gromox grommunio-admin*
gromox-2.0.0.9a01c75-lp153.3.1.x86_64
grommunio-admin-web-2.6.0.30.3a13674-lp153.29.1.noarch
grommunio-admin-api-1.9.19.ffb31e8-lp153.35.1.noarch
grommunio-admin-common-6.cb985db-lp153.3.1.noarch
grommunio-admin-api-bash-completion-1.9.19.ffb31e8-lp153.35.1.noarch
Zu guter letzt: Das ändert aber alles nichts daran, dass der Import und Sync im Web-UI auf Fehler läuft 🙂