ldap迁移脚本group

来源:互联网 发布:炒外汇技术大数据 编辑:程序博客网 时间:2024/06/16 05:32

#!/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);

 


 

 

原创粉丝点击