2016-06-29 13 views
1

Ich möchte eine Verbindung zu Novell eDirectory mit Ruby, aber ich habe TimeOut auf 'open_connection'.Ruby LDAP-Abfrage Novell eDirectory

Was denkst du?

require 'net/ldap' 

    ldap = Net::LDAP.new :host => "172.21.45.60", 
     :port => 686, 
     :encrytion => :simple_tls, 
     :auth => { 
       :method => :simple, 
       :username => "cn=XXX,ou=XXX,ou=XXX,o=XXX", 
       :password => "XXX" 
     } 

    filter = Net::LDAP::Filter.eq("cn", "paul*") 
    treebase = "ou=XXX,ou=XXX,o=XXX" 
    attrs = ["mail", "cn", "sn", "objectclass", "loginTime"] 

    ldap.search(:base => treebase, :filter => filter, :attributes => attrs) do |entry| 
     puts "DN: #{entry.dn}" 
     entry.each do |attribute, values| 
     puts " #{attribute}:" 
     values.each do |value| 
      puts "  --->#{value}" 
     end 
     end 
    end 

    p ldap.get_operation_result 

Fehler

C:/Ruby23/lib/ruby/gems/2.3.0/gems/net-ldap-0.14.0/lib/net/ldap/connection.rb:63 :in `open_connection': Se produjo un error durante el intento de conexi¾n ya que la parte conectada no respondi¾ adecuadamente tras un periodo de tiempo, o bien se produjo un error en la conexi¾n establecida ya que el host conectado no ha p odido responder. - user specified timeout (Net::LDAP::Error) 
+0

Ihr Port ist "686". Ich denke, das sollte 636 (für ssl) oder 389 sein. – user3441151

Antwort

1

Du eine conenction NICHT machen zu "172.21.45.60" auf Port 686.

würde ich vorschlagen, Sie versuchen, zunächst im Klartext Verbindungen zu machen, wenn testen.

beginnen also ganz einfach:

require 'rubygems' 
require 'net/ldap' 

ldap = Net::LDAP.new :host => server_ip_address, 
    :port => 389, 
    :auth => { 
      :method => :simple, 
      :username => "cn=manager,dc=example,dc=com", 
      :password => "opensesame" 
    } 

filter = Net::LDAP::Filter.eq("cn", "George*") 
treebase = "dc=example,dc=com" 

ldap.search(:base => treebase, :filter => filter) do |entry| 
    puts "DN: #{entry.dn}" 
    entry.each do |attribute, values| 
    puts " #{attribute}:" 
    values.each do |value| 
     puts "  --->#{value}" 
    end 
    end 
end 

Sobald das funktioniert, dann TLS hinzufügen.

Wie ich sehe die Ruby documentation (Ich bin nicht Ruby-Experte), ist das Beispiel zeigt:

{ 
    :method => :start_tls, 
    :tls_options => { :ca_file => "/etc/cafile.pem", :ssl_version => "TLSv1_1" } 
} 

-Jim