Linux traceroute Länder

1509
megaflux

Okay, ich habe jetzt ziemlich lange gesucht und kann es nicht glauben. Gibt es keine Spur, die mir die Hopfen auf einer Weltkarte zeigt? Und vielleicht in einer 64-Bit-Version

Ich habe xtraceroute, grace, GTrace gefunden ... aber alle sind ein bisschen rostig.

Vielleicht bin ich einfach zu dumm

Jeder weiß etwas

1

2 Antworten auf die Frage

1
vtest

Vorausgesetzt, es gibt frei herunterladbare GeoIP-Datenbanken, freie Bindungen für solche Datenbanken für fast jede Programmiersprache und Bibliotheken, mit denen Punkte auf einer Weltkarte gezeichnet werden können, könnte man versuchen, eine eigene visuelle Traceroute zu implementieren. Dies ist eine großartige Idee für ein kleines Projekt.

Bearbeiten: Während diese Antwort eher für StackOverflow geeignet ist, ist hier eine sehr einfache visuelle Traceroute-App, die in Python geschrieben wurde. Während es unter Linux für mich funktioniert, funktioniert es nicht für alle, da es viele Nachteile hat:

  • Es werden einige Python-Bibliotheken von Drittanbietern verwendet, die installiert werden müssen. Sie bekommen es, Import Errorwenn Sie sie nicht haben
  • es bündelt nicht das Weltkartenbild, das es verwendet [ich habe ein kostenloses Bild von Wikipedia :) abgelegt]
  • Es bündelt nicht die von ihm verwendete Geoip-Datenbank [ich verwende die kostenlose Datenbank von maxmind.com]
  • es soll unter Linux laufen, das mtrinstalliert ist
  • Es verwendet fest codierte Dateinamen für temporäre Dateien

Hier ist der Code:

#!/usr/bin/env python  """visual traceroute"""  import subprocess import sys import time  from PyQt4.QtCore import * from PyQt4.QtGui import *  import pygeoip  import wugeo  GEOIPDB = "GeoLiteCity.dat"  class MyForm(QDialog):  """Main app window"""  def __init__(self, parent = None):  """doc"""  super(MyForm, self).__init__(parent) self.setWindowTitle("Visual Route") self.image_label = QLabel(self) self.image_label.setMinimumSize(800, 600) self.image_label.setAlignment(Qt.AlignCenter) self.load_image("map.jpg") self.ip_edit = QLineEdit(self) self.tr_button = QPushButton("Traceroute", parent=self) layout = QVBoxLayout() layout.addWidget(self.image_label) layout.addWidget(self.ip_edit) layout.addWidget(self.tr_button) self.setLayout(layout)  self.connect(self.tr_button, SIGNAL("clicked()"), self.traceroute)  def load_image(self, file_name):  """Loads an image"""  image = QImage(file_name) self.image_label.setPixmap(QPixmap.fromImage(image)) self.repaint()  def traceroute(self):  """Do the traceroute thing"""  self.tr_button.setEnabled(False) ip = self.ip_edit.text() p = subprocess.Popen(["sudo", "/usr/sbin/mtr", "-n", "-c", "1", "--raw", ip], stdout=subprocess.PIPE) output = p.communicate()[0] lines = output.split("\n") ip_lines = lines[::2][:-1] # filter odds, skip last ips = [x.split()[2] for x in ip_lines] coords = self.get_coords(ips) self.draw_dots(coords) self.tr_button.setEnabled(True)  @staticmethod def get_coords(ips):  """Get coords using pygeoip"""  coords = [] geoip = pygeoip.GeoIP(GEOIPDB, pygeoip.MMAP_CACHE) for ip in ips: record = geoip.record_by_addr(ip) latitude = record["latitude"] longitude = record["longitude"] location = (latitude, longitude, 1, "red") coords.append(location)  return coords  def draw_dots(self, coords):  """Draws dots on the world map Uses temporary files (ugly!)"""  infile = "map.jpg" outfile = "/tmp/outmap.jpg" for coord in coords: wugeo.geo_marker([coord], infile, outfile) self.load_image(outfile) time.sleep(1) infile = outfile  def main():  """Main function"""  app = QApplication(sys.argv) form = MyForm() form.show() app.exec_()  if __name__ == "__main__": main() 
0
Sirex

Visualroute kann eine Linux-Version haben? Nicht sicher, Google scheint ja zu sagen, die Seite scheint nein zu sein. - Seine Shareware aber trotzdem.