2016-05-24 6 views
6

Ich versuche, den folgenden Befehl auszuführen:java.io.IOException: Nein X-Jenkins-CLI2-Anschluss (jenkins cli funktioniert nicht)

java -jar jenkins-cli.jar -s http://jenkins_URL/ --username myusername --password mypassword help

Aber ich bin immer die Fehlermeldung:

java.io.IOException: Nein X-Jenkins-CLI2-Anschluss unter [null, X-Erforderlich-Permission, X-Jenkins, X-You-Are-In-Gruppe, X-Hudson, Content- Length, Expires, X-Sie-Sind-Authentifiziert-As, X-Permission-Implicated-By, Set-Cookie, Server, X-Content-Type-Optionen, Datum, X-Jenkins-Session, Content-Type] bei hudson.cli.C LI.getCliTcpPort (CLI.java:284) bei hudson.cli.CLI. (CLI.java:128) bei hudson.cli.CLIConnectionFactory.connect (CLIConnectionFactory.java:72) bei hudson.cli.CLI._main (CLI.java:473) bei hudson.cli.CLI.main (CLI.java:384) Unterdrückt: java.io.IOException: Server zurückgegeben HTTP-Antwortcode: 403 für URL: http://52.9.217.252:8888/cli at sun.net.www .protocol.http.HttpURLConnection.getInputStream (HttpURLConnection.java:1628) bei hudson.cli.FullDuplexHttpStream. (FullDuplexHttpStream.java:78) bei hudson.cli.CLI.connectViaHttp (CLI.java:152) bei Hudson. cli.CLI. (CLI.java:132) ... 3 weitere

meine Datei config.xml

<?xml version='1.0' encoding='UTF-8'?> 
<hudson> 
    <disabledAdministrativeMonitors/> 
    <version>1.0</version> 
    <numExecutors>2</numExecutors> 
    <mode>NORMAL</mode> 
    <useSecurity>true</useSecurity> 
    <authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy"> 
    <denyAnonymousReadAccess>false</denyAnonymousReadAccess> 
    </authorizationStrategy> 
    <securityRealm class="hudson.security.HudsonPrivateSecurityRealm"> 
    <disableSignup>true</disableSignup> 
    <enableCaptcha>false</enableCaptcha> 
    </securityRealm> 
    <disableRememberMe>false</disableRememberMe> 
    <projectNamingStrategy class="jenkins.model.ProjectNamingStrategy$DefaultProjectNamingStrategy"/> 
    <workspaceDir>${ITEM_ROOTDIR}/workspace</workspaceDir> 
    <buildsDir>${ITEM_ROOTDIR}/builds</buildsDir> 
    <jdks/> 
    <viewsTabBar class="hudson.views.DefaultViewsTabBar"/> 
    <myViewsTabBar class="hudson.views.DefaultMyViewsTabBar"/> 
    <clouds/> 
    <scmCheckoutRetryCount>0</scmCheckoutRetryCount> 
    <views> 
    <hudson.model.AllView> 
     <owner class="hudson" reference="../../.."/> 
     <name>All</name> 
     <filterExecutors>false</filterExecutors> 
     <filterQueue>false</filterQueue> 
     <properties class="hudson.model.View$PropertyList"/> 
    </hudson.model.AllView> 
    </views> 
    <primaryView>All</primaryView> 
    <slaveAgentPort>-1</slaveAgentPort> 
    <label></label> 
    <crumbIssuer class="hudson.security.csrf.DefaultCrumbIssuer"> 
    <excludeClientIPFromCrumb>false</excludeClientIPFromCrumb> 
    </crumbIssuer> 
    <nodeProperties/> 
    <globalNodeProperties/> 
</hudson> 

Antwort

1

sicher zu sein, es ist kein Benutzername und/oder Passwort ändern Fehler diese Zeile:

<denyAnonymousReadAccess>true</denyAnonymousReadAccess> 

in:

<denyAnonymousReadAccess>false</denyAnonymousReadAccess> 

in der Config XML-Datei

Jetzt können Sie Ihre jenkins Schnittstelle verbinden Sie Ihre Anmeldeinformationen

zu debuggen Vergessen Sie nicht, es auf true zu setzen.

+0

Ich bin in der Lage, die jenkins Schnittstelle zu sehen. Ich kann die CLI-Befehle nicht ausführen. Ich habe versucht, das zu tun, was Sie gesagt haben, ich kann die CLI-Befehle immer noch nicht ausführen/ –

+0

Sie haben einen 403-Fehler, wenn es sich nicht um ein Anmeldeproblem handelt, vielleicht geht es um Ihre Webserver-Konfiguration. Kannst du deine Webserver-Konfiguration einstellen? Mit mehr Informationen (Port, Proxy Port etc ...) –

+0

Ich habe meine config.xml zur Beschreibung hinzugefügt. –

0

Wenn Sie nicht wissen, warum es fehlschlägt, führen Sie unter strace/dtruss Debugger, z.

$ strace -fs1000 -e trace=network java -jar jenkins-cli.jar -s http://localhost:8080/ help 

Wenn Sie haben:

HTTP/1.1 403 kein gültiger Krümel in der Anforderung

Fehler enthalten war, dann müssen Sie entweder Krume schaffen, in dem Wunsch, oder deaktivieren Sie CSRF Protection.

Wenn Sie Jenkins CLI it's not working yet verwenden, wenn der Crumb Issuer aktiviert ist, können Sie stattdessen curl verwenden. Zum Beispiel (Ersetzen localhost mit Jenkins-Adresse):

  1. Hinweis Benutzer API Token (/user/USER/configure).
  2. Holen Sie sich Ihre Krümel:

    CRUMB=$(curl -s 'http://USER:[email protected]:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)') 
    
  3. einen Befehl aufrufen (zB Liste der Aufträge):

    curl -H $CRUMB http://USER:[email protected]:8080/api/json 
    

Verwandte: Jenkins REST API Create job

5

es eine offizielle Lösung bei der ist Jenkins Wiki Page for CLI.

Die Lösung ist

  • Zum verwalten Jenkins (in der Jenkins UI)
  • ->Configure Global Security
  • -> "TCP-Port für JNLP-Agenten": Wählen Sie fixed oder random
+0

arbeitete wie ein Charme! Vielen Dank! – Mamun

1

Für diejenigen, die auf wie ma suchen ke diese Arbeit programmatisch (unbeaufsichtigt). Sie haben

<jenkins.CLI> 
     <enabled>false</enabled> 
    </jenkins.CLI> 

zu

<jenkins.CLI> 
     <enabled>true</enabled> 
    </jenkins.CLI> 

in /var/lib/jenkins/jenkins.CLI.xml zu ändern und neu zu starten jenkins

+0

Das ermöglicht die Option -remoting, ohne die Sicherheit zu aktivieren und nichts manuell zu ändern. –

Verwandte Themen