tb2ldif.rb

Thunderbirdのアドレス帳からエクスポートしたcsvファイルをLDAPに登録するために変換するRubyスクリプトです。
前日書いたように、ひじきネットさんのスクリプトを参考にさせていただきました。ありがとうございます。
名前はユニークなものでなければならないので、uid項目にメールアドレスを登録してインデックスとしてみました。
そのほかの設定は改造して使ってください。
#!/usr/bin/env ruby
require ‘uconv’
require ‘base64’
unless ARGV[0]
print “tb2ldif.rb -Version0.1- 2008/6/22n”
print “t使用方法ntt./tb2ldif.rb csvfile(Thunderbirdからエクスポートしたcsvfile)nn”
exit 1
end
#---------------------------------------------------------#
# 設定項目ここから
#---------------------------------------------------------#
# 各種フラグ
fConv = 1 #文字コード変換CP932=>UTF8のフラグ
fEnc = 1 #BASE64変換のフラグ(一応multibyte判定)
fStartp = 1 #一行目を処理しない
keyNum = 4 #uidとする項目番号
fDebg = 0 #動作確認用に
# DN指定
baseDN = ‘ou=AddressBook,dc=reptec,dc=local’
# ヘッダ。ファイルのはじめに追加される
header = <<-"EOB" dn: #{baseDN} objectClass: organizationalUnit objectClass: top ou: AddressBook EOB # 登録に必要となるオブジェクトクラスを書く objectClass = <<-"EOB" objectClass: inetOrgPerson objectClass: top EOB # スキーマに応じた選び出し対応表 relationTable = [['dn',38], ['givenName',0], ['sn',1], ['cn',2], ['displayName',3], ['mail',4], ['telephoneNumber',6], ['homePhone',7], ['facsimileTelephoneNumber',8], ['mobile',10], ['streetAddress',17], ['l',19], ['st',20], ['postalAddress',21], ['title',23], ['ou',24], ['o',25], ['labeledURI',26], ['description',35], ['uid',37] ] #---------------------------------------------------------# # 設定項目ここまで #---------------------------------------------------------# # ファイルを開く file = open(ARGV[0]) # ヘッダ部分の出力 print header lineNum = 0 while file.gets next if $_.strip.empty? lineNum += 1 if fStartp == 1 lineNum -= 1 fStartp = 0 next end if fConv == 1 data = Uconv.sjistou8($_) else data = $_ end data = data.chomp!.split(",", -1) #個別dn内容の用意 data.push(data[keyNum]) data.push("uid=" + data[keyNum] + "," + baseDN) if fDebg == 1 print "-*-*-*-*-*-*-*-*-n" print "data内容は:n" p data print "-*-*-*-*-*-*-*-*-n" end relationTable.each{ |item| val = data[item[1]] key = item[0]+":" if fEnc == 1 if val =~ /[x80-xff]/ val = Base64.encode64(val).split.join key << ":" end end if !val.empty? print "#{key} #{val}n" if key =~ /^[dD][nN]:/ print objectClass end end } print "n" end # ファイルを閉じる file.close # Thunderbirdの標準的CSV並びと対応番号表 # 0=名 # 1=姓 # 2=表示名 # 3=ニックネーム # 4=メールアドレス # 5=別のメールアドレス # 6=勤務先の電話番号 # 7=自宅の電話番号 # 8=FAX 番号 # 9=ポケットベル番号 # 10=携帯電話番号 # 11=番地 (自宅) # 12=番地 (自宅) 2 # 13=市町村 (自宅) # 14=都道府県 (自宅) # 15=郵便番号 (自宅) # 16=国 (自宅) # 17=番地 (勤務先) # 18=番地 (勤務先) 2 # 19=市町村 (勤務先) # 20=都道府県 (勤務先) # 21=郵便番号 (勤務先) # 22=国 (勤務先) # 23=役職 # 24=部門 # 25=組織 # 26=Web ページ 1 # 27=Web ページ 2 # 28=誕生年 # 29=誕生月 # 30=誕生日 # 31=追加情報 1 # 32=追加情報 2 # 33=追加情報 3 # 34=追加情報 4 # 35=メモ # 36=処理の都合で必ず空になる(split -1なので) # 37=keyNumで指定したものの値 # 38=個別DN(スクリプト内で使用)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です