【问题标题】:unwrap ldifde output file展开 ldifde 输出文件
【发布时间】:2012-01-22 00:17:28
【问题描述】:

我正在使用 ldifde 导出架构,但输出文件包含长行,因此很难手动编辑数千行。

我必须编辑文件,因为我必须在那里替换一个字符串,例如:

distinguishedName: 
 CN=xxx-com-Admin-Assistant-yy,CN=Schema,CN=Configuration,-->DC=morel,DC=mis,DC=mo
 r-ambiguit,<--DC=com

distinguishedName: 
 CN=xxx-com-Admin-Assistant-yy,CN=Schema,CN=Configuration,-->DC=myDomain,<--DC=com

如您所见,我应该先解包文件然后替换字符串,否则替换将不起作用关于我应该如何执行此操作的任何线索。我尝试了 perl 脚本,但没有运气。我还研究了 ldifde 选项。

提前致谢, m0dest0

【问题讨论】:

  • @dgw c:\Perl64\bin>perl -p -e "BEGIN {$/ = undef} s/\n(?=[a-z])/ /g" test.ldf跨度>
  • @dgw c:\Perl64\bin>perl -p -e "s/\n //g" test.ldf
  • --&gt; &lt;-- 应该有助于发现变化还是它们是数据的一部分?
  • 您正尝试使用该 perl 正则表达式删除 DC=morel,DC=mis,DC=mor-ambiguit,?那应该如何工作?
  • @dgw 谢谢,你的脚本运行得很好。

标签: perl active-directory ldif


【解决方案1】:

如果您严格希望使用 LDIFDE 将架构从一个域导入到另一个域,您可以使用 LDIFDE 中的-c 参数将一个 DN 更改为另一个,请参阅KB237677: Using LDIFDE to import and export directory objects to Active Directory

-c FromDN ToDN  Replace occurrences of FromDN to ToDN

【讨论】:

    【解决方案2】:
    #!/usr/bin/perl
    
    use strict ;
    
    my $orig = do { local $/ ; <DATA> } ;
    ( my $copy = $orig ) =~ s/(DC=)(.+?)(,DC=com)/$1myDomain$3/xsg ;
    
    printf "Before:\n%s\nAfter:\n%s\n" , $orig , $copy ;
    
    __DATA__
    distinguishedName:
     CN=xxx-com-Admin-Assistant-yy,CN=Schema,CN=Configuration,DC=morel,DC=mis,DC=mo
     r-ambiguit,DC=com
    

    这将打印出来:

    Before:
    distinguishedName:
     CN=xxx-com-Admin-Assistant-yy,CN=Schema,CN=Configuration,DC=morel,DC=mis,DC=mo
     r-ambiguit,DC=com
    
    After:
    distinguishedName:
     CN=xxx-com-Admin-Assistant-yy,CN=Schema,CN=Configuration,DC=myDomain,DC=com
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-09
      • 2016-08-15
      • 1970-01-01
      • 2012-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多