Я пытаюсь выполнить traceroute на google.com, используя скрипт python, и написать вывод на file ie output.txtPython Script for Traceroute и печать результата в файле показывает ошибку (OSError: [Errno 2] Нет такого файла или каталога) в Linux Mint
Если я непосредственно использую subprocess.call ('traceroute', 'google.com'), он отлично работает, и выход печатается на экране. Поскольку я хочу получить результат в файле, я использую
Подпроцесс.Popen (["tracert", '-w', '100', hostname], stdout = subprocess.PIPE, stderr = subprocess.STDOUT)
, а затем записывать данные о трубах в файл. Однако я получаю ошибку в этой строке т.е. OSError: [Errno 2] Нет такого файла или каталога
Код:
import urllib
import time
import datetime, threading
from bs4 import BeautifulSoup
import urllib2
import subprocess
import socket
fp2=open("output.txt",'w')
#This function will be executed after every x minutes
def TraceRoute():
hostname="google.com"
fp2.write(hostname+" : ")
print(hostname)
#subprocess.call(['traceroute',hostname])
traceroute = subprocess.Popen(["tracert", '-w', '100', hostname],stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
while (True):
hop = traceroute.stdout.readline()
if not hop: break
print '-->',hop
fp2.write(hop)
threading.Timer(60*50, TraceRoute).start() #Ensures periodic execution of TraceRoute() x=60*50 seconds
TraceRoute()
Ошибка:
Traceback (самый последний вызов последний):
Файл "./scr3.py", line 87, in TraceRoute()
Файл «./scr3.py», строка 76, в TraceRoute traceroute = subprocess.Popen (["tracert", '-w', '100', hostname], stdout = subprocess.PIPE, stderr = subprocess .STDOUT) Файл "/usr/lib/python2.7/subprocess.py", строка 710, в INIT errread, errwrite)
Файл «/usr/lib/python2.7/subprocess.py », строка 1327, в _execute_child рейза child_exception
OSError: [Errno 2] Нет такого файла или каталога
Как это решить? Я застрял на этом с навсегда. Пожалуйста, помогите
Если 'traceroute' работает правильно в одном случае, почему вы пытаетесь использовать' tracert' во втором случае? Я подозреваю, что в вашей системе нет такой программы 'tracert', которая легко объяснила бы« Нет такого файла или каталога »... – twalberg
Да,' tracert' - это имя эквивалентной Windows программы. – davidedb