Linux traceroute Страны

1415
megaflux

Ладно, я долго искал и не могу в это поверить. Разве нет трассировки, которая показывает мне прыжки на карте мира? И возможно в 64-битной версии

Я нашел xtraceroute, Грейс, GTrace ... но они все немного ржавые.

Может быть, я просто слишком глуп

Кто-нибудь что-то знает

1

2 ответа на вопрос

1
vtest

Предполагая, что существуют свободно загружаемые базы данных GeoIP, бесплатные привязки для таких баз данных практически для любого языка программирования и библиотеки, которые позволяют наносить точки на карту мира, вы можете попытаться реализовать собственную визуальную трассировку. Это отличная идея для небольшого проекта.

Изменить: хотя этот ответ больше подходит для StackOverflow, вот очень простое визуальное приложение traceroute, написанное на Python. Хотя он работает для меня в Linux, он не будет работать для всех, потому что у него много недостатков:

  • он использует довольно много сторонних библиотек Python, которые необходимо установить. Вы получите, Import Errorесли у вас их нет
  • он не связывает изображение карты мира, которое он использует [Я взял бесплатное изображение из Википедии :)]
  • он не связывает используемую базу данных geoip [я использую бесплатную с maxmind.com]
  • это должно быть запущено на Linux, который mtrустановил
  • он использует жестко закодированные имена файлов для временных файлов

Вот код:

#!/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 может быть версия для linux? Не уверен, Google, кажется, говорит, да, их сайт выглядит как нет. - Это все равно условно.

Похожие вопросы