簡體   English   中英

Python-Jenkins 隧道連接失敗:403 Forbidden

[英]Python-Jenkins tunnel connection failed: 403 Forbidden

我一直在使用 Python Jenkins API 來管理我的 Jenkins 工作。 它已經工作了很長時間,但突然停止工作。 這是代碼摘錄:

import jenkins

server = jenkins.Jenkins('https://jenkins.company.com', username='xxxx', password='password')
server._session.verify = False
print(server.jobs_count())

回溯:

server.jobs_count() 中的文件“”,第 1 行

文件“E:\anaconda3\Lib\site-packages\ jenkins_init_.py ”,第 1160 行,在 jobs_count return len(self.get_all_jobs()) 中

文件“E:\anaconda3\Lib\site-packages\ jenkins_init_.py ”,第 1020 行,在 get_all_jobs jobs = [(0, [], self.get_info(query=jobs_query)['jobs'])]

文件“E:\anaconda3\Lib\site-packages\jenkins_ init _.py”,第 769 行,在 get_info requests.Request('GET', self._build_url(url))

文件“E:\anaconda3\Lib\site-packages\ jenkins_init_.py ”,第 557 行,在 jenkins_open 中返回 self.jenkins_request(req, add_crumb, resolve_auth).text

文件“E:\anaconda3\Lib\site-packages\jenkins_ init _.py”,第 573 行,在 jenkins_request self.maybe_add_crumb(req)

文件“E:\anaconda3\Lib\site-packages\ jenkins_init_.py ”,第 371 行,在 maybe_add_crumb 'GET', self._build_url(CRUMB_URL)), add_crumb=False)

文件“E:\anaconda3\Lib\site-packages\ jenkins_init_.py ”,第 557 行,在 jenkins_open 中返回 self.jenkins_request(req, add_crumb, resolve_auth).text

文件“E:\anaconda3\Lib\site-packages\jenkins_ init _.py”,第 576 行,在 jenkins_request self._request(req))

文件“E:\anaconda3\Lib\site-packages\ jenkins_init_.py ”,第 550 行,在 _request return self._session.send(r, **_settings)

文件“E:\anaconda3\Lib\site-packages\requests\sessions.py”,第 622 行,發送 r = adapter.send(request, **kwargs)

文件“E:\anaconda3\Lib\site-packages\requests\adapters.py”,第 507 行,在發送中引發 ProxyError(e, request=request)

ProxyError: HTTPSConnectionPool(host='jenkins.company.com', port=443): 最大重試次數超過 url: /job/scp/job/sm/job/9218/job/4198/job/SIT/crumbIssuer/api/ json(由 ProxyError('無法連接到代理。',OSError('隧道連接失敗:403 禁止')))

請注意,Jenkins 服務器上沒有任何代理,我可以使用用戶/密碼登錄到 Jenkins 服務器,沒有任何問題。

我有 crum id 和 API 令牌,但我沒有找到任何指示如何將 crum 添加到 Python-Jenkins API 中的信息。

tl; dr:您缺乏連接性。

jenkins library depends import requests報告連接錯誤。 遺憾的是,它在診斷中使用了 ProxyError。 理由是這樣的:

  • 我們正在為應用程序發出GET請求。
  • 如果正在使用代理,則可選地,“從服務器 S 獲取”將變成“從代理 P 獲取”。
  • 最終我們嘗試聯系某個主機,S 或 P。不妨告訴代理用戶 S 的 state 未知,但 P 的 state 已“關閉”。

“為什么要提代理?”到此結束。 診斷咆哮。

當您說“我沒有使用代理”時,我相信您。 對於還不熟悉它的人來說,診斷可能有點像轉移注意力。


當我在端口 443、80 或使用 ICMP 探測 ebs.usps.gov (56.207.107.97) 時,我看到零響應數據包。 你在 .net 的不同部分,你和服務器之間有不同的過濾器,所以你的里程可能會有所不同。 我不會將該主機描述為“公共服務器”,因為它不會給我任何響應。


看起來您將SYN發送到 tcp 端口 443,並且某些網絡設備丟棄了該數據包,或者服務器以 SYN-ACK 回復並且該回復數據包被丟棄。

很可能服務器已關閉或您的請求已被丟棄。

回溯的最后部分說:

ProxyError: HTTPSConnectionPool(host='ebs.usps.gov', port=443)

這很可能表明您的 Python 代碼在運行時從某處繼承了代理設置。 它可能是POSIX類平台上的環境變量 ((HTTP|HTTPS)_PROXY) 或類似的東西...如果您需要使用代理來訪問 Jenkins 實例,那么問題出在代理本身。 它出於某種原因阻止您訪問。 如果您不需要使用代理,那么您應該在運行時刪除影響您的 Python 代碼的設置。

另外,看看J_H是怎么說的……

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM