Найти - Пользователи
Полная версия: Не работает системный Ping
Начало » Python для новичков » Не работает системный Ping
1
Guo
Здравствуйте!
Я хотел написать программу, которая будет проверять доступность узлов по ICMP протоколу. Пробовал разное, в том числе готовые варианты программы ping с сайта PyPI. Я не помню что использовал для установки этих пакетов, но в итоге ОС стала пинговать используя скрипты python. Потом, решив использовать для своей задачи системный пинг, я удалял пакеты с PyPI используя то же средство что и для установки. Но ОС продолжает пытаться пинговать используя скрипты, выдавая при этом ошибку что не может их найти. При этом под другим пользователем системный пинг работает нормально.

Скорее всего проблема в настройках окружения или реестре, я пробовал играться с параметрами, но решить проблему не удалось.

ОС - Window 8.1 Версия питона 3.4.
Скрин ошибки во вложении.

Помогите, пожалуйста.
doza_and
:) :)
windows windows Ох Эх. А вот в unix есть такая команда - который.

Она делает примерно следующее:
#! /usr/bin/env python
# Variant of "which".
# On stderr, near and total misses are reported.
# '-l<flags>' argument adds ls -l<flags> of each file found.
import sys
if sys.path[0] in (".", ""):
    del sys.path[0]
import sys
import os
from stat import *
def Name(fil, first=1):
    u"""
search file name for given executable
"""
    if first:
        return Names([fil])[0]
    else:
        return Names([fil])
def Names(fils):
    u"""
search file name for executables list
"""
    pathlist = os.environ['PATH'].split(os.pathsep)
    sts = 0
    res = []
    for prognm in fils:
        ident = ()
        drb, prog = os.path.split(prognm)
        if drb:
            if os.path.exists(prognm):
                res.append(os.path.abspath(prognm))
        else:
            for dr in pathlist:
                filename = os.path.join(dr, prog)
                try:
                    st = os.stat(filename)
                except os.error:
                    continue
                if not S_ISREG(st[ST_MODE]):
                    raise LookupError(filename + ': not a disk file')
                else:
                    mode = S_IMODE(st[ST_MODE])
                    if mode & 0b111:
                        if not ident:
    #                        print filename
                            res.append(filename)
                            ident = st[:3]
                        else:
                            if st[:3] == ident:
                                s = 'same as: '
                            else:
                                s = 'also: '
                            res.append(filename)
                    else:
                        raise LookupError(filename + ': not executable')
    return res
# Name(r"C:\apps\Notepad++\notepad++.exe")
if __name__ == '__main__':
    for i in sys.argv[1:]:
        res = Name(i)
        print(res)

больше похоже что остался ping.bat в путях. Если есть ping.py тоже может влиять.
попробуйте
which.py ping.exe
which.py ping.bat
Guo
Спасибо за ответ, сегодня вечером буду перед тем компьютером, отпишусь что и как.
Guo
doza_and
windows windows Ох Эх. А вот в unix есть такая команда - который.Она делает примерно следующее:

Знаете, каким то образом прошло. Недели 3-4 не работало, а тут вдруг прошло. Но правда после запуска which.py.

Я правильно понимаю, что which.py только находит исполняемые файлы для программ и на решение моей проблемы повлиять не мог?

Ткните, если вам не сложно, где почитать про скрипты, которые собраны в C:\Python34\Tools\Scripts и для чего они там. Можно на английском.
doza_and
Туда валятся все скрипты которые предоставляют устанавливаемые пакеты. Поэтому доку надо читать про то что ставите. По умолчанию там немного стоит. По идее модули содержат doc строки для начала их и надо читать. Там обычно есть ссылки на сайт где можно получить более подробное описание.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB