2011-09-19 148 views
-1

我想創建一個腳本來添加一個AD帳戶,但首先檢查重複項。PERL - AD帳戶添加 - 檢查帳戶是否存在

讓我們只說 $第一=約翰 $去年=李四

的命名約定爲 「DoeJ」 如果 「DoeJ」 已經存在(例如:Jane Doe的),那麼它應該是姓,名字的2個字符。例如:「DoeJo」。如果「DoeJo」已經存在,那麼姓氏,名字的前3個字符,等等......

我該如何做到這一點? 我正在尋找Sript的例子,因爲我是Perl新手。

回答

3

我只是想在入睡之前進行一些入侵操作。對不起,我現在懶惰地解釋任何事情,但我相信你會發現,當在perldoc上尋找任何特別的東西時,你會發現很多。

@Everybody:隨意評論,修改,擴展,美化,如果你覺得這樣的代碼。

#!/usr/bin/perl 

use strict; 
use warnings; 
use Data::Dumper; 

my %accounts; 

while (<DATA>) { 
    my ($id, $first_name, $last_name) = split; 
    my $account_name = $last_name; 

    for my $letter (split ("" => $first_name)) { 
     $account_name .= $letter; 
     last unless exists $accounts{ $account_name }; 
    } 

    my ($prefix, $suffix) = ($account_name, 0); 
    while (exists $accounts{ $account_name }) { 
     $account_name = $prefix . ++$suffix; 
    } 

    $accounts{ $account_name } = "$id: $first_name $last_name"; 
} 

print Dumper(\%accounts); 

__DATA__ 
1 Jane Doe 
2 John Doe 
3 Joho Doe 
4 John Doe 
5 John Doe 
6 John Doe 
+0

美麗!這給了我需要的跑步開始!你搖滾揚和吉姆。謝謝!!! –

1

總是檢查CPAN! CPAN是具有數百個Perl模塊的綜合Perl歸檔網絡,可用於特定任務。

碰巧有一個Win32::AD模塊,看起來它會做你想要的。 (你在的Windows右鍵是?如果沒有,你可能要回落到LDAP。下面是Perl Monks一個例子。

我想這個問題是多少的Perl你知道。有一個稱爲一個Perl命令perldoc這是非常有用的,例如:。

C:> perldoc Win32::AD 

會打印出對Win32的文檔:: AD模塊如果沒有打印,您可能沒有安裝該模塊還有另一個命令調用cpan它允許你下載和指定你想要的CPAN中的模塊,我不知道你是否在Windows,Linux等等,我不知道是否無論你使用的是ActiveState還是Strawberry Perl,你都在Windows上,所以我不能給你更多的幫助。

如果您是Perl新手,您可能需要查看Llama Book。這是一本非常好的開始Perl書,我最大的抱怨是,它在近幾年來變得非常重要的面向對象的Perl編程方式上沒有多大作用。

我通常建議您通過Perl 5 tutorials,它將涵蓋複雜的數據結構(想象一個包含其他散列的散列數組)。然後,一旦瞭解了引用的工作方式,請閱讀面向對象編程的初始教程。

如果您可以給我們提供一些有關您的情況的詳細信息(Windows與Linux,您對Perl的熟悉程度,您是否知道CPAN等),我們可以爲您提供更多幫助。

+0

我是中級Perl .. Llama的書震撼了! –

+0

所以你知道CPAN。我使用'Net :: LDAP'來訪問活動目錄(這就是'AD'的意思,對嗎? –

+0

是的,我現在正在使用Win32:AD和Net:LDAP。 –

相關問題