This page имеет документацию по pygodaddy, которая является скриптом python для обновления IPv4-адреса в DNS Go Daddy. Я установил этот пакет на мою машину CentOS, используя pip install pygodaddy. Документация предоставляет этот пример:Python pygodaddy connection timed out
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 рекомендует добавить сон (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, я не уверен, как отладить эту проблему подключения.
EDIT: Хотя у меня есть прокси-сервер в моей локальной сети, я настроил свои машины, чтобы не направлять трафик через прокси-сервер. На любой машине в моей локальной сети, 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. К моему большому удивлению, при прослеживании маршрута до dns.godaddy.com на порту 443, пакеты могут перепрыгивать весь путь до 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)
Сверху, тайм-аут соединения TCP, вы действительно хотите удалить свой идентификатор клиента и пароль из первого и последнего фрагментов кода образца. И вообще просто измените его, если он настоящий. – favoretti
Если вы наберете «telnet dns.godaddy.com 443» с вашего терминала, вы получаете соединение? – favoretti
Интересно. telnet dns.godaddy.com 443 также производит соединение, ограниченное как на Linux, так и на компьютерах Windows в моей локальной сети, а при переходе на http://dns.godaddy.com или https://dns.godaddy.com в браузере " сайт не может быть достигнут ". Кажется, что dnsodaddy.com не слушает 80 или 443. Я свяжусь с поддержкой Go Daddy для подтверждения. – JeremyCanfield