Post 如何通过curl禁用Jenkins作业?

Post 如何通过curl禁用Jenkins作业?,post,curl,jenkins,Post,Curl,Jenkins,我想通过向Jenkins发送一个post curl请求来禁用Jenkins作业 我尝试过使用以下方法: curl-xpost http://:8080//disable curl-xpost http://:8080//disable?token= curl-u:POST http://:8080//disable 但每次都失败了。我得到的错误是: 403请求中未包含有效的面包屑 有没有一个很好的基于卷曲的解决方案来解决这个问题?下面的内容对我很有用 curl -X POST http://&l

我想通过向Jenkins发送一个post curl请求来禁用Jenkins作业

我尝试过使用以下方法:

  • curl-xpost http://:8080//disable
  • curl-xpost http://:8080//disable?token=
  • curl-u:POST http://:8080//disable
  • 但每次都失败了。我得到的错误是:

    403请求中未包含有效的面包屑


    有没有一个很好的基于卷曲的解决方案来解决这个问题?

    下面的内容对我很有用

    curl -X POST http://<servername>/job/jobname/disable
    
    curl-X POSThttp:///job/jobname/disable
    

    请确保用户可以访问此操作。

    碎屑错误表示您正在使用。您需要在请求中包含一个适当的面包屑标题。面包屑可以从Jenkins API获得,如上面链接的Jenkins wiki页面所述。for“Trigger parameterized build with curl and crump”显示了在curl请求中添加crump头的语法

    没有有效的crump意味着您的Jenkins安装启用了一个安全选项,该选项可以防止以标准方式发送请求,从而避免。您也不能使用Jenkins CLI,因为它是

    以下是使用
    curl
    的步骤(用Jenkins地址替换
    localhost
    ):

  • 注意您的用户API令牌(来自
    /user/user/configure
  • 拿你的面包屑:

    CRUMB=$(curl -s 'http://USER:TOKEN@localhost:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)')
    
  • 现在,您可以通过在标题中发送碎屑来禁用作业:

    curl -X POST -H "$CRUMB" http://USER:TOKEN@localhost:8080/<jobname>/disable
    
    curl-X POST-H“$crump”http://USER:TOKEN@localhost:8080//禁用
    
    如果由于某种原因上述方法不起作用,您可以尝试改用
    -u USER:TOKEN

  • 我发现第一部分对我来说很有用,即获取面包屑,但第二部分,curl不喜欢这种语法,它说:

    curl:(6)无法解析主机“http:”

    因此,我必须使用以下有效的语法:

    curl-H$crumphttp://localhost:8080//disable -u用户:令牌设置jenkins的“全局安全设置”:
    
    取消选中“防止跨站点请求伪造漏洞”

    CREAM数据始终是固定的还是每次都必须使用查询获取?@rwt CREAM大部分是静态的,但它确实取决于用户名和客户端IP。如果您编写的脚本中的参数会有所不同,最好在脚本开始时请求碎屑。谢谢,这就是我在java应用程序中需要的,发送user:token-in-request-header禁用CSRF保护会打开一个安全漏洞,并使您的实例容易受到恶意制作的链接的攻击,效果非常好!注意,使用
    curl-u user:pass可能更干净http://localhost:8080/...
    而不是将user/pass放入URL本身(取决于编写脚本的方式)。