#!/usr/bin/perl -w
##by yingying.liu @ 2013.3.28 11:03
##Release 1.0
use strict;
use warnings;
use Encode;
use DBI;
use MIME::Base64;
use MIME::QuotedPrint;
use Encode;
use Cache::Memcached;
use Getopt::Long;
my $flag = 0;
my $ldap_data = "ldapinfo.txt";
my $sn = " ";
my $cn = " ";
my $ordered = " ";
my $created = " ";
my $modified = " ";
#connect to mysql;
my $sql = " ";
my $rows = " ";
my $conn;
$conn = DBI->connect("DBI:mysql:database=lyy:host=127.0.0.1","root","123456",{'RaiseError' => 1});
open MAILFORSEC,"$ldapinfo.txt";
open TMPFILE,">>move.log";
#循环读取文件中的每一行
foreach my $line (<MAILFORSEC>)
{
#以dn: 和dn::开头的行,以dn::开始的行是经过base64编码的,所以一般需要解码过程
if($line =~ /^dn: cn=(.*),ou=systemGroup,ou=Groups,domainName/i || $line =~ /^dn:: (.*)/i || $flag == 1) {
$flag = 1;
#匹配sn:行数据
if($line =~ /^sn: (.*)/i){
$sn = $1;
}
#匹配cn:或者cn::的行数据
elsif($line =~ /^cn: (.*)/i || $line =~ /^cn:: (.*)/i){
$cn = $1;
if($line =~ /^cn:: (.*)/i){ //cn::是经过base64编码的
$cn = decode_base64($1); //解码成中文
}
}
elsif($line =~ /^ordered: (.*)/i){
$ordered = $1;
}
elsif($line =~ /^created: (.*)/i){
$created = $1;
}
elsif($line =~ /^modified: (.*)/i){
$modified = $1;
}
}
if($line =~ /^#/i){ //匹配注释行
my $befor = "SET NAMES 'utf8'"; //解决中文insert into mysql是出现乱码问题,之前在网上看用gdb2312不管用。
$rows = $conn->do($befor); //运行befor语句
#组合insert语句
$sql = sprintf("INSERT INTO group(id,name,ordered,created,modified) VALUES('$sn','$cn','%s','$order','$created','$modified');",$cn);
#insert into mysql
$rows = $conn->do($sql);
$accountStatus = 0;
$flag = 0;
next;
}
}
}
close(MAILFORSEC);
close(TMPFILE);