Автор Тема: traceroute[python]  (Прочитано 522 раз)

0 Пользователей и 1 Гость просматривают эту тему.

t1bur1an

  • Участник форума
  • Сообщений: 538
  • Репутация: 5.65
  • OS:
  • Linux Linux
  • Browser:
  • Chrome 13.0.782.107 Chrome 13.0.782.107
    • Просмотр профиля
traceroute[python]
« : Декабрь 10, 2011, 09:24:02 am »
задолбал traceroute своими звездочками в то время как надо уже конечный узел показывать и написал свой с блекджеком и шлюхами используя обычный пинг с различным ттл ))
#!/usr/bin/python2
# -*- coding: utf-8 -*-
from os import popen as cmd
from sys import argv
from socket import gethostbyname as nametoip
from socket import gethostbyaddr as iptoname
def backresolv(ip):
try:
name = " ( " + iptoname(ip)[0] + " ) "
except:
name = " ( " + ip + " ) "
return name
ttl=ip=1
trace=""
srcip=nametoip(argv[1])
while(ip!=srcip):
answer = cmd("ping "+srcip+" -c 1 -W 3 -t "+str(ttl)).read()
for line in answer.split("\n"):
if 'from' in line.split():
ip = line.split()[3][:-1]
if ttl != 1: trace += str(ttl)+": "+ip+backresolv(ip)+"\n"
else: trace += str(ttl)+": "+ip+backresolv(ip)+"\n"
elif 'exceeded' in line.split():
ip = line.split()[1]
if ttl != 1: trace += str(ttl)+": "+ip+backresolv(ip)+"\n"
else: trace += str(ttl)+": "+ip+backresolv(ip)+"\n"
elif line.find('100% packet loss') != -1 and answer.find('exceeded') == -1:
ip = answer.split("\n")[0].split()[1]
trace += str(ttl)+": "+ip+backresolv(ip)+" unavailable\n"

ttl += 1
print trace
на выходе получается:
$ ./tr.py habrahabr.ru
1: 192.168.3.1 ( 192.168.3.1 )
2: 95.156.118.254 ( 95.156.118.254 )
3: 87.236.40.1 ( mbr.kraslan.ru )
4: 87.236.40.206 ( 87.236.40.206 )
5: 195.112.232.25 ( 195.112.232.25 )
6: 212.188.23.137 ( 212.188.23.137 )
7: 195.34.53.85 ( m9-cr01-po3.msk.stream-internet.net )
8: 195.34.36.142 ( Caravan-m9.msk.stream-internet.net )
9: 212.24.42.131 ( v810.th-1.caravan.ru )
10: 62.213.71.224 ( 62.213.71.224 )
 
Вполне норм :D
« Последнее редактирование: Декабрь 12, 2011, 06:27:12 pm от t1bur1an »
принимать роды у соевой колбасы при помощи аргонной сварки?
форум профессионалов, хуле (c)зеленый

Pascal

  • Администратор
  • Сообщений: 8558
  • Репутация: 38.45
  • OS:
  • Linux (Gentoo) Linux (Gentoo)
  • Browser:
  • Chrome 16.0.912.63 Chrome 16.0.912.63
    • Просмотр профиля
    • Форум системных администраторов UNIX
traceroute[python]
« Ответ #1 : Декабрь 12, 2011, 09:50:12 am »
t1bur1an, Так резолв же довинтить делов то?
cout << "Shalom World!\n"; // (с)

t1bur1an

  • Участник форума
  • Сообщений: 538
  • Репутация: 5.65
  • OS:
  • Linux Linux
  • Browser:
  • Chrome 16.0.912.63 Chrome 16.0.912.63
    • Просмотр профиля
traceroute[python]
« Ответ #2 : Декабрь 12, 2011, 06:05:30 pm »
Pascal, fixed
принимать роды у соевой колбасы при помощи аргонной сварки?
форум профессионалов, хуле (c)зеленый

Pascal

  • Администратор
  • Сообщений: 8558
  • Репутация: 38.45
  • OS:
  • Linux (Gentoo) Linux (Gentoo)
  • Browser:
  • Chrome 16.0.912.63 Chrome 16.0.912.63
    • Просмотр профиля
    • Форум системных администраторов UNIX
traceroute[python]
« Ответ #3 : Декабрь 12, 2011, 06:30:18 pm »
t1bur1an, Отлично
cout << "Shalom World!\n"; // (с)

t1bur1an

  • Участник форума
  • Сообщений: 538
  • Репутация: 5.65
  • OS:
  • Linux Linux
  • Browser:
  • Chrome 16.0.912.63 Chrome 16.0.912.63
    • Просмотр профиля
traceroute[python]
« Ответ #4 : Декабрь 17, 2011, 01:33:39 pm »
кстате, traceroute -I , но на некоторых системах сие требует рутовых прав :D
$ traceroute -I www.ru
The specified type of tracerouting is allowed for superuser only
принимать роды у соевой колбасы при помощи аргонной сварки?
форум профессионалов, хуле (c)зеленый