2012-04-15 9 views
1

Ich habe einen dedizierten Webserver mit PHP-Software, die automatisch die IPs einiger Windows- und möglicherweise Linux-Maschinen sammeln und aktualisieren muss, die dynamische IPs haben (ungefähr die gleiche Idee wie no-ip.com) Klient). Die einfachste Sache, die ich denke, zu tun ist, einen Dienst auf jedem Rechner laufen zu lassen, die einfach eine eindeutige URL vom Webserver zieht, die dann die Client-IP-es Nachschlag kann und passen mit der URL usw.Dienst zum Ping-Webserver

$_SERVER["HTTP_CLIENT_IP"] 

Was ist die beste Sprache ist/library/environment, um einen Client-Dienst zu erstellen, der eine URL-Anfrage mit einfachem Zugriff auf die externe IP-Adresse der Maschine erstellen kann (um Änderungen an der dynamischen IP-Adresse zu überprüfen, um den Webserver nicht zu überfluten)? Es muss nichts Besonderes sein, es muss nicht einmal etwas vom Server lesen, es muss nur die URL-Anfrage machen.

Neben Web-Programmierung habe ich einige Erfahrung mit Python und C und ein paar anderen. Alle Hinweise oder Ressourcen, die ich zu diesem Thema lesen kann, wären willkommen. Überdenke ich das auch? Dank

+0

Sie alle funktionieren gut, verwenden Sie einfach das, was Sie am besten wissen. –

+0

Programmiersprache ist keine Barriere, auf der anderen Seite, wenn Sie eine große Menge von IPs (und die Komplexität Ihrer Tabellen ist niedrig), dann ist es besser, eine nicht rel-Datenbank anstelle von MySQL zu verwenden. Beachten Sie, dass die Treiber von MongoDB nicht so gut sind wie die von Python. – luke14free

+0

Hrm, ich war vielleicht nicht sehr klar. Ich mache mir keine Sorgen um den Server. Ich versuche nur, die Clients zu veranlassen, eine Anfrage an den Webserver mit einer eindeutigen URL zu stellen, jedes Mal wenn sie feststellen, dass sich ihre IP geändert hat. Ich habe die Mechanize-Python-Bibliothek (http://www.search.sourceforge.net/mechanize/) gefunden, um URL-Anfragen zu stellen, aber ich bin mir nicht sicher, wie ich das in einen Windows-Dienst umwandeln könnte. pywin32? Auch nach einigen Recherchen sind die Clients hinter Routern, also denke ich, dass ich keine andere Wahl habe, als einen externen Server anzupingen, könnte auch mein sein. – SkyNT

Antwort

2

Sie ein Shell-Skript mit wget Anrufe können auf Hilfe durch einen Schlaf in einem gefolgt schreiben Schleife.

wget führt http Anfragen und es ist für Windows verfügbar und ist bereits auf allen/einigen Unix-Maschinen installiert.

0

Wenn Sie bereits eine Art von Verfahren haben eine URL-Anforderung, führen Sie eine jeweils 10 Minuten zu dieser Seite zu tun:

http://checkip.dyndns.org/Current%20IP%20Check.htm

Weicht werden Ihnen sagen, „Aktuelle IP-Adresse: XXX.XXX. XXX.XXX ", und Sie müssen nur einige String-Daten extrahieren.

(Sie überfluten nur den whatsmyip Webserver und Ihre eigenen nicht mehr!)

Glad

EGOrecords

1

Mechanize ist viel zu viel Aufwand für URL-Anfragen in Python. Es ist wirklich einfach:

from urllib2 import urlopen 
urlopen("my://url").read() 

Die erste Zeile kann je nach Ihrer Version von Python abhängig (zum Beispiel, ist es urllib.request in Python 3.)

Es gibt Hunderte von „Was ist meine IP“ Dienste gibt ; oder Sie könnten sogar Ihre eigenen schreiben! Stecken Sie eine davon in die URL, um die IP zu erhalten. Sie müssen abfragen, um herauszufinden, wann es sich ändert, da Sie auf dem Router keinen Code ausführen können.

Verwandte Themen