2017-01-02 68 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

回答