Automating Reciprocal Calendar Sharing: Difference between revisions
(New page: The problem: you've just added a new department of users to your Zimbra server. All of those users need to share their calendars with each of the other members of their department. One s...) |
No edit summary |
||
Line 5: | Line 5: | ||
First, create a distribution list with all of the relevant user accounts via the Zimbra Admin console. | First, create a distribution list with all of the relevant user accounts via the Zimbra Admin console. | ||
The following BASH script takes the name of that distribution list as a command line argument, then outputs a series of CLI commands to share each members's calendar (read-only) with the distribution list, then add a mountpoint to each user's shared calendar to the other list members' calendars. The script should be run as the zimbra user. | The following BASH script takes the name of that distribution list as a command line argument, then outputs a series of CLI commands to share each members's calendar (read-only) with the distribution list, then add a mountpoint to each user's shared calendar to the other list members' calendars. The script should be run as the zimbra user. | ||
<pre> | <pre> | ||
Line 32: | Line 32: | ||
fi | fi | ||
</pre> | </pre> | ||
NOTE: This script will just print out a bunch of commands: it won't actually *run* them. You should redirect the output of this script to a text file, then sanity check the commands in the text file BEFORE you try to run them. For example: | |||
<pre> | |||
[zimbra@mail ~]$ zimbraRecipCalShare.sh mylist@mydomain.com > check_me_first.sh | |||
... then verify that the commands in the check_me_first.sh file are sane . . . | |||
[zimbra@mail ~]$ bash check_me_first.sh | |||
</pr> | |||
Also, the initial script takes a while to run (~2 minutes for a 10-user distribution list, in one instance) due to the various lookups that are required. The generated script takes even longer to run. |
Revision as of 20:59, 8 February 2010
The problem: you've just added a new department of users to your Zimbra server. All of those users need to share their calendars with each of the other members of their department.
One solution:
First, create a distribution list with all of the relevant user accounts via the Zimbra Admin console.
The following BASH script takes the name of that distribution list as a command line argument, then outputs a series of CLI commands to share each members's calendar (read-only) with the distribution list, then add a mountpoint to each user's shared calendar to the other list members' calendars. The script should be run as the zimbra user.
#!/bin/bash if [ "$#" == "1" ] then users=$(zmsoap --type admin --zadmin GetDistributionListRequest/dl="$1" @by="name" | grep dlm | sed -e 's/.*<dlm>\(.*\)<\/dlm>/\1/g') echo $users for u in $users do echo zmmailbox -z -m $u modifyFolderGrant /Calendar group psychstaff@psymail.ucdavis.edu r uname=$(zmmailbox -z -m $u gid -v | grep zimbraPrefFromDisplay | sed -e 's/.*: "\(.*\)",/\1/') for v in $users do if [ $u != $v ] then echo zmmailbox -z -m $v createMountpoint --view appointment \"/$uname\'s Calendar\" $u /Calendar fi done done else echo "usage: $0 distlist@zimbradomain.com" fi
NOTE: This script will just print out a bunch of commands: it won't actually *run* them. You should redirect the output of this script to a text file, then sanity check the commands in the text file BEFORE you try to run them. For example:
[zimbra@mail ~]$ zimbraRecipCalShare.sh mylist@mydomain.com > check_me_first.sh ... then verify that the commands in the check_me_first.sh file are sane . . . [zimbra@mail ~]$ bash check_me_first.sh </pr> Also, the initial script takes a while to run (~2 minutes for a 10-user distribution list, in one instance) due to the various lookups that are required. The generated script takes even longer to run.