2016-06-01 5 views
0

Ich habe den folgenden Code zu ping meine ddns hostname und zurück, wenn der Host ist nach oben oder unten. Ich versuchte dann, die socket.gethostbyname hinzuzufügen, die für meinen normalen hostname www.iamsimonsmale.co.uk arbeitet, aber nicht http://ssmale.ddns.net.socket.ghethostbyname funktioniert nicht für meine ddns hostname

Ich habe versucht, die http:// vom Anfang der Adresse zu entfernen, und dies schlägt auch fehl.

#!/usr/bin/env python 
# This script checks to see if the server is up or down and prints the pinged IP 

import requests 
import socket 
import time 

while True: 

    host = 'http://ssmale.ddns.net' 

    ip = socket.gethostbyname(host) 

    print ip 

    response = requests.get(host) 
    if response.status_code == requests.codes.ok: 
     print('Server Up') 
    else: 
     print('Server Down') 
    time.sleep(10) 

die Fehlermeldung für http://ssmale.ddns.net ist

Traceback (most recent call last): 
File "PingTestIP.py", line 12, in <module> 
ip = socket.gethostbyname('http://ssmale.ddns.net') 
socket.gaierror: [Errno -2] Name or service not known 

und für ssmale.ddns.net ist

Traceback (most recent call last): 
File "PingTestIP.py", line 16, in <module> 
response = requests.get(host) 
File "/usr/lib/python2.7/dist-packages/requests/api.py", line 60, in get 
return request('get', url, **kwargs) 
File "/usr/lib/python2.7/dist-packages/requests/api.py", line 49, in request 
return session.request(method=method, url=url, **kwargs) 
File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 443, in request 
prep = self.prepare_request(req) 
File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 374, in prepare_request 
hooks=merge_hooks(request.hooks, self.hooks), 
File "/usr/lib/python2.7/dist-packages/requests/models.py", line 304, in prepare 
self.prepare_url(url, params) 
File "/usr/lib/python2.7/dist-packages/requests/models.py", line 358, in prepare_url 
"Perhaps you meant http://{0}?".format(url)) 
requests.exceptions.MissingSchema: Invalid URL u'ssmale.ddns.net': No schema supplied. Perhaps you meant http://ssmale.ddns.net? 

und wenn Sie fertig sind mit `www.iamsimonsmale.co.uk es funktioniert und der Druck ist

86.136.251.202 
Server Up 

Ich habe auch versucht, den Code von How do I get the IP address from a http request using the requests library? ohne Erfolg zu verwenden.

Mit diesem Tool (http://mxtoolbox.com/SuperTool.aspx#) i bestätigt, dass es eine A-Eintrag im DNS für ssmale.ddns.net

Was das Problem verursacht und wie würde ich es beheben?

Antwort

0

Abfrage für die Adresse ohne den http:// Teil:

ip = socket.gethostbyname('ssmale.ddns.net') 

Und dann die vollständige Adresse in Ihren Anfragen Abfrage verwenden:

response = requests.get("http://ssmale.ddns.net") 

Arbeiten auf meiner Maschine:

>>> import socket 

>>> socket.gethostbyname("ssmale.ddns.net") 
'86.136.251.202' 

>>> import requests 

>>> requests.get("http://ssmale.ddns.net") 
<Response [200]> 

Die Fehlermeldung, die Sie gepostet haben, sagt es bereits: No schema supplied. Perhaps you meant http://ssmale.ddns.net?

+0

Betrachten Sie es jetzt offensichtlich. Ich dachte nicht daran, beides zu benutzen. Vielen Dank für Ihre Hilfe – TheStudent

+0

@TheStudent Es ist im Nachhinein immer offensichtlicher. Froh, dass ich helfen konnte. – margold

Verwandte Themen