2017-01-02 71 views
0

This page有關於pygodaddy的文檔,pygodaddy是一個用於更新Go Daddy DNS中的IPv4地址的python腳本。我使用pip install pygodaddy在我的CentOS機器上安裝了這個軟件包。該文檔提供了此示例:Python pygodaddy連接超時

from pygodaddy import GoDaddyClient 
client = GoDaddyClient() 
if client.login(username, password): 
    print client.find_domains() 
    client.update_dns_record('sub.example.com', '1.2.3.4') 

在我的CentOS機器上,我創建了一個名爲godaddy.py的文件,其中包含以下內容。注意:提供的用戶名和密碼僅用於演示,而不是我真實的用戶名和密碼。

#!/usr/bin/env python 
import pygodaddy 
import logging 

from pygodaddy import GoDaddyClient 
client = GoDaddyClient() 
logging.basicConfig(filename=/var/log/godaddy/godaddy.log, format='%(asctime)S %(message)s', level=logging.DEBUG) 
if client.login('36524174', 'Bht45f!as34Ra'): 
    print client.find_domains() 
    client.update_dns_record('wima2.freekb.net', '12.34.56.78') 

當在終端中輸入蟒蛇godaddy.py,什麼都不會發生了一會兒,然後這最終顯示:

File "/usr/lib/python2.7/site-packages/requests/adapters.py", line 487, in send 
    raise ConnectionError(e, request=request) 
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='dns.godaddy.com', port=443): Max retries exceeded with url: /default.aspx (Caused by NewConnectionError('<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x176e350>: Failed to establish a new connection: [Errno 110] Connection timed out',)) 

我已禁用的iptables。我將腳本的權限設置爲777,由root:root擁有。

This post建議添加sleep(int)。我添加了睡眠(1),但仍然連接超時。

#!/usr/bin/env python 
import pygodaddy 
import logging 
import sleep 

from pygodaddy import GoDaddyClient 
client = GoDaddyClient() 
logging.basicConfig(filename=/var/log/godaddy/godaddy.log, format='%(asctime)S %(message)s', level=logging.DEBUG) 
if client.login('36524174', 'Bht45f!as34Ra'): 
    time.sleep(1) 
    print client.find_domains() 
    client.update_dns_record('wima2.freekb.net', '12.34.56.78') 

作爲一個相對較新的Python,我不確定如何調試此連接問題。

編輯: 雖然我在我的局域網中有一個代理服務器,但我配置了我的機器不通過我的代理服務器路由流量。在我的局域網,Linux或Windows上的任何一臺機器上,我可以ping dns.godaddy.com,我得到了一個響應,沒有丟包,所以我知道我有能力與dns.godaddy.com交談。 python腳本使用端口443.如果我嘗試telnet dns.godaddy.com 443,則連接超時。

telnet dns.godaddy.com 443 
Trying 104.238.65.158. . . 
telnet: Unable to connect to remote host: Connection timed out  

我也嘗試使用nmap來查看我的客戶端和dns.godaddy.com之間的跳數。令我驚訝的是,當在端口443上追蹤到dns.godaddy.com的路由時,數據包能夠一直跳到dns.godaddy.com。我想知道爲什麼我用telnet和python腳本連接超時,但nmap能夠「連接」。

nmap -Pn --traceroute -p 443 dns.godaddy.com 

Starting Nmap 6.40 (http://nmap.org) at 2017-01-02 19:17 CST 
Nmap scan report for dns.godaddy.com (104.238.65.158) 
Host is up (0.076s latency). 
rDNS record for 104.238.65.158: ip-104-238-65-158.ip.secureserver.net 
PORT  STATE  SERVICE 
443/tcp filtered https 

TRACEROUTE (using proto 1/icmp) 
HOP RTT  ADDRESS 
1 4.67 ms r1.software.eng.us (192.168.0.1) 
2 18.84 ms 142.254.152.173 
3 35.83 ms ae62.applwibp02h.midwest.rr.com (24.164.240.217) 
4 28.85 ms be22.gnfdwibb01r.midwest.rr.com (65.31.113.6) 
5 30.93 ms bu-ether16.chcgildt87w-bcr00.tbone.rr.com (66.109.6.204) 
6 33.18 ms bu-ether11.chctilwc00w-bcr00.tbone.rr.com (66.109.6.21) 
7 77.75 ms 4.28.83.74 
8 69.48 ms ip-184-168-0-117.ip.secureserver.net (184.168.0.117) 
9 83.20 ms ip-104-238-65-158.ip.secureserver.net (104.238.65.158) 
+0

很好,TCP連接超時您真的想從第一個和最後一個示例代碼片段中刪除您的clientID和密碼。一般來說,只要改變它,如果它是真正的。 – favoretti

+1

如果您從終端鍵入「telnet dns.godaddy.com 443」,您是否獲得連接? – favoretti

+0

有趣。 telnet dns.godaddy.com 443也會在我的LAN中的Linux和Windows計算機上生成連接超時,並且在瀏覽器中導航到http://dns.godaddy.com或https://dns.godaddy.com時,「站點無法到達「顯示。似乎dnsodaddy.com不會在80或443上收聽。我會聯繫Go Daddy支持人員確認。 – JeremyCanfield

回答