2009-04-15 8 views
1

Ich habe ein kleines Skript geschrieben, das meine externe IP-Adresse jedes Mal abruft, wenn ich ein neues Terminalfenster öffne und es zur aktuellen Zeit an eine Textdatei angehängt habe. Ich suche nach Ideen, wie und wann sich meine IP-Adresse ändert. Ich hüpfe zwischen Heim und Campus und könnte sie mit dem Skript trennen, aber es wäre schön, sie separat zu visualisieren.Wie visualisiert man IP-Adressen, wenn sie sich in Python ändern?

Ich verwende häufig Matplotlib. Irgendwelche Ideen?

Antwort

4

Zeichnen Sie Ihre IP als Punkt auf the xkcd internet map (oder einige vergrößerte Teilmenge der Karte, um besser zu zeigen, aber nahe benachbarten IPs).

Zeichnen Sie jeden Punkt "gestapelt" proportional zu, wie oft Sie diese IP gehabt haben, und färben Sie die IPs, um neuere Punkte heller zu machen, weniger neuere Punkte proportional dunkler.

+0

Ich fragte mich, ob dies für ein paar verschiedene Sätze von IP-Adressen möglich war.Habe verschiedene Plots für verschiedene Arten von Dynamics IPs, die ich in der Stadt erhalte. – physicsmichael

0

Es gibt einen Abschnitt im matplotlib-Benutzerhandbuch zum Zeichnen von Balken in einem Diagramm zur Darstellung von Bereichen. Ich habe das nie selbst gemacht, aber es scheint angemessen für das, wonach Sie suchen.

0

Wenn Sie das angegebene Terminal verwenden, nehme ich an, dass Sie sich in einem UNIX-System befinden. Wenn Sie den Schalter -f zusammen mit dem Befehlszeilen-Dienstprogramm verwenden, können Sie das Ende einer Datei ständig überwachen. Sie könnten auch etwas wie inotify von IBM verwenden, das Dateiänderungen überwachen oder dnotify (und die Datei in einem eigenen Verzeichnis ablegen kann), die bei den meisten Distributionen Standard ist (Sie können dann tail -n 1 aufrufen, um die letzte Zeile zu erhalten). Sobald sich die Zeile ändert, können Sie die aktuelle Systemzeit seit der Epoche mit Pythons time.time() abrufen und sie von der Zeit der letzten Änderung subtrahieren, und dann diese Differenz mit matplotlib darstellen. Ich nehme an, Sie könnten die Zeiten in Bereiche einteilen, um die Grafik auf sich selbst zu erleichtern. 1 Bar für weniger als 1 Stunde Wechselintervalle, ein anderes für Wechsel zwischen 1 - 5 Stunden und so weiter.

Es gibt eine Python-Implementierung von Tail -f here, wenn Sie nicht direkt verwenden möchten. Bei Erkennung einer Änderung in der Datei können Sie das oben genannte ausführen.

1

"Wann" sind eindimensionale Zeitdaten, die in einer Zeitleiste gut dargestellt werden. Bei größeren Zeitspannen würden Sie wahrscheinlich die Details verlieren, aber die meisten Plots von "wann" hätten diesen Defekt.

Für "Wie oft" wäre ein Standard-2d (Balken) -Plot der Zeit gegen die Frequenz, unterteilt in Eimer für jeden Tag/Woche/Monat, ein Standardweg. Ein gleitender Durchschnitt könnte auch informativ sein.

Sie könnten die Timeline & Balkendiagramm kombinieren, mit der Zeitachse sichtbar, wenn Sie in der Zoom-Anzeige & die Frequenzanzeige gezoomt werden, wenn herausgezoomt. Wie wäre es mit einem Balkendiagramm mit der Zeit auf der horizontalen Achse, wo die Breite jedes Balkens die Länge der Zeit ist, in der Ihr Computer eine bestimmte IP-Adresse hatte und die Höhe jedes Balkens umgekehrt proportional zur Breite ist? Das würde auch eine Handlung davon geben, wann wie oft plot.

Sie können die Daten auch als pulse density modulated-Signal interpretieren, wie das, was Sie auf einer SuperAudio-CD erhalten. Sie können dies grafisch darstellen oder sogar auf die Daten hören. Da es keine offensichtliche Zeitlänge für ein IP-Änderungsereignis gibt, wäre die Länge eines Impulses ein abstimmbarer Parameter. Auf ähnliche Weise könnten Sie die Daten als eine Rechteckwelle anzeigen (Dreieckswelle, Sägezahn & c), wobei jedes IP-Änderungsereignis ein Pegelübergang ist. Klingt wie ein Spaß Pure Data Projekt.