From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <40B433E2.5050303@rmts.donpac.ru> Date: Wed, 26 May 2004 10:06:26 +0400 From: Eugene Prokopiev User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; ru-RU; rv:1.5b) Gecko/20031007 Thunderbird/0.3a X-Accept-Language: ru-ru, ru MIME-Version: 1.0 To: community@altlinux.ru Subject: Re: [Comm] Ldap scripting: bash vs perl References: <40B1C951.3030204@rmts.donpac.ru> In-Reply-To: <40B1C951.3030204@rmts.donpac.ru> Content-Type: text/plain; charset=KOI8-R; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Processed: rmts.donpac.ru, Wed, 26 May 2004 10:02:58 +0400 (not processed: message from valid local sender) X-MDRemoteIP: 192.168.10.5 X-Return-Path: john@rmts.donpac.ru X-MDaemon-Deliver-To: community@altlinux.ru X-BeenThere: community@altlinux.ru X-Mailman-Version: 2.1.5 Precedence: list Reply-To: community@altlinux.ru List-Id: Mailing list for ALT Linux users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 May 2004 06:04:25 -0000 Archived-At: List-Archive: List-Post: Не смог удержаться и проделал то же самое на php и ruby. Вот что получилось (приведены все варианты): # time ./make_ldap_filter.sh > /dev/null 0.05user 0.03system 0:00.08elapsed 89%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (825major+194minor)pagefaults 0swaps # time ./make_ldap_filter.php > /dev/null 0.63user 0.51system 0:04.46elapsed 25%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (8903major+196minor)pagefaults 0swaps # time ./make_ldap_filter.rb > /dev/null bind: Success 0.37user 0.04system 0:02.21elapsed 18%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (488major+211minor)pagefaults 0swaps # time ./make_ldap_filter.py > /dev/null 0.40user 0.10system 0:01.70elapsed 29%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (720major+349minor)pagefaults 0swaps # time ./make_ldap_filter.pl allowNat > /dev/null 2.43user 0.13system 0:02.57elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (437major+833minor)pagefaults 0swaps Ну а вот код: # cat ./make_ldap_filter.sh #!/bin/bash ldapsearch -LLL "(&(objectClass=internetAccess) ("$1"=TRUE))" | grep fixed-address | awk '{print $3}' # cat ./make_ldap_filter.php #!/usr/bin/php # cat ./make_ldap_filter.rb #!/usr/bin/ruby require "ldap" LDAP::Conn.new("localhost").bind{|conn| conn.perror("bind") begin conn.search("dc=myserver, dc=myprovider, dc=ru", LDAP::LDAP_SCOPE_SUBTREE, "(objectclass=*)"){|e| p e.vals("cn") p e.to_hash() } rescue LDAP::ResultError => msg $stderr.print(msg) end } # cat ./make_ldap_filter.py #!/usr/bin/env python import ldap, re try: ldapConnection = ldap.open('myserver.myprovider.ru') ldapConnection.simple_bind_s('', '') except ldap.LDAPError, e: print e out = [] baseDN = 'cn=Network,dc=myserver,dc=myprovider,dc=ru' searchScope = ldap.SCOPE_SUBTREE _result = ldapConnection.search_s(baseDN, searchScope, '(&(objectclass=internetAccess)(allowNat=TRUE))', ['dhcpStatements']) if _result: out = filter(lambda x: re.search('fixed-address.*', x), map(lambda x: x[1]['dhcpStatements'][0], _result)) print out ldapConnection.unbind_s() # cat ./make_ldap_filter.pl #!/usr/bin/perl use Net::LDAP; $ldap = Net::LDAP->new('localhost') or die "$@"; $ldap->bind; $mesg = $ldap->search( base => "dc=myserver, dc=myprovider, dc=ru", filter => sprintf("(&(objectClass=internetAccess) (%s=TRUE))", @ARGV) ); $mesg->code && die $mesg->error; foreach $entry ($mesg->all_entries) { foreach my $value ($entry->get_value('dhcpStatements')) { if ($value =~ /fixed-address /) { print "$'\n"; } } } $ldap->unbind; Еще одним тормозом оказался php ;) Но тут уже дело в том, что завершение работы скрипта и возврат к # происходит слишком медленно, сам поиск (на глаз) вроде не медленнее прочих. -- С уважением, Прокопьев Евгений