2016-08-09 285 views
0

Also erstelle ich ein API Skript in Ruby für Bluecat (IPAM). Ich Anmeldung kein Problem haben, aber wenn ich versuche, ein Add IPv4 Befehl, den ich diesen Fehler zu laufen:Ruby Soap Fehler; eingeloggt, aber nicht eingeloggt Fehler

in `raise_soap_and_http_errors!': (env:Server) Not logged in (Savon::SOAPFault) 

mein Skript (mit einigen zusätzlichen Code herausgenommen) unter:

require 'savon' 
require 'csv' 

module Bluecat 
class Api 

WsdlUrl = 'http:/bluecat/Services/API?wsdl' 
User = 'username' 
Pass = 'password' 

attr_accessor :auth_cookies 
attr_accessor :client 
def initialize 
    @client = Savon.client(wsdl: WsdlUrl) 
    unless client.nil? 
    login 
    puts client.operations 
    addIP4Network 
    else 
    print "No client\n" 
    end 
    print "Got cookies %s\n" % auth_cookies 
    logout 
end 

def login 
    response = client.call(:login) do 
    message username: User, password: Pass 
    end 
    @auth_cookies = response.http.cookies 
end 

def logout 
    puts "logging out" 
    client.call(:logout) 
end 

def addIP4Network 
    CSV.foreach('CSV', :headers => true , :encoding => 'ISO-8859-1') do |row,i| 

    message = {'blockId' => 'example' , 'CIDR' => row[0] , 'properties' => "configuration = COV "} 
    response = client.call(:add_ip4_network, message: message) 

    end 
end 
end 
end 

Irgendwelche Ideen, warum ich diesen Fehler bekomme? Danke

Antwort

0

Ich hatte das gleiche Problem. Anscheinend müssen Sie die Cookies mit jeder Anfrage senden.

ändern

response = client.call(:add_ip4_network, message: message) 

zu

response = client.call(:add_ip4_network, message: message, cookies: auth_cookies) 
+0

Das funktionierte. Vielen Dank! – Jake