|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Џа®Є®ЇмҐў …ўЈҐЁ© 2:5020/400 26 May 2004 10:06:47 To : Џа®Є®ЇмҐў …ўЈҐЁ© Subject : Re: Ldap: perl vs bash -------------------------------------------------------------------------------- Hе смог удержаться и проделал то же самое на python, 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 Hу а вот код: # 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 <?php $ds=ldap_connect("localhost"); if ($ds) { $r=ldap_bind($ds); $sr=ldap_search($ds,"dc=myserver, dc=myprovider, dc=ru", "allowNat=TRUE"); $info = ldap_get_entries($ds, $sr); for ($i=0; $i<$info["count"]; $i++) { echo "Host is: ". $info[$i]["cn"][0] ."\n"; } ldap_close($ds); } ?> # 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 ;) Hо тут уже дело в том, что завершение работы скрипта и возврат к # происходит слишком медленно, сам поиск (на глаз) вроде не медленнее прочих. -- С уважением, Прокопьев Евгений --- ifmail v.2.15dev5.3 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/6577fd20ba20.html, оценка из 5, голосов 10
|