2008年7月9日

openwebmail ldap 公用通訊錄更新程式

這是我用Perl寫的LDAP公用通訊錄更新程式,功能為抓取LDAP的cn及mail屬性後製成OpenWebMail的通訊錄,若有需要的人請 點我 下載。(我使用的Openwebmail為2.51版)

Perl模組需求:

請確定你的主機有Net::LDAP模組,若沒有的話可以透過CPAN安裝,確認方式如下。
Shell>perl -e '"use Net::LDAP;"'
#若出現以下訊息表示您的主機找不到或沒有安裝Net::LDAP模組
Can't locate Net/LDAP.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8
__略__

若沒有模組的可以透過CPAN安裝
Shell> cpan
#進入CPAN提示符號後
cpan> install Net::LDAP
~~請耐心等待編譯過程 ~~
cpan> exit

使用方式:

參數設定
請先用編輯器開啟程式,修改必要的參數(程式裡我都有加上註解)
#ldap主機位置
my $ldapHost = "ldap.example.com";
#ldap的連接埠,預設為389
my $ldapPort = "389";
#ldap 通訊協定版本,預設為3
my $ldapVersion = "3";
#bind DN,登入ldap認證用的帳號
my $bindDN = "uid=checkme,ou=people,ou=example,o=com";
#bind DN 密碼
my $bindDNPassWord = "checkcheck";
#搜尋的起始點
my $searchBase = "ou=people,ou=example,o=com";
#過濾條件
my $filter = "(objectClass=posixAccount)";
#搜尋路徑設定,預設為sub,表示會搜尋searchBase下所有項目
my $scope = "sub";
#OpwnWebMail公用通訊錄檔案位置
my $globalAddressBook = "/var/www/html/cgi-bin/openwebmail/etc/addressbooks/global";
#於螢幕顯示ldap撈出的資料,1 -> on , 0 -> off
my $debug = 0;

程式動作流程
connect ldap -> bind -> search ldap(cn&mail屬性) ->計算資料數-> 刪除舊的通訊錄 -> 建立通訊錄

執行方式
Shell> perl OWM-GAdrBook-LDAP.pl

設定crontab
Shell> vi /etc/crontab
新增
0 0 * * * root /path/to/OWM-GAdrBook-LDAP.pl > /dev/null 2>&1


點選通訊錄後的畫面

沒有留言:

張貼留言