#python #sockets #ip #ip-address #traceback
#python #сокеты #ip #ip-адрес #обратная трассировка
Вопрос:
Я пытаюсь создать программу для пинга IP-адресов и т.д. Однако каждый раз, когда я пытаюсь выполнить пинг IP-адреса, я всегда получаю несколько ошибок. Я пробовал несколько разных способов пинга IP-адреса, и ни один из них не работает. Любая помощь будет принята с благодарностью! : D
Мой код:
import time
import socket
import os
import subprocess
time.sleep(1)
print(' _ __ __')
time.sleep(0.3)
print(' / |/ /__ ___/ /__')
time.sleep(0.3)
print(' / / _ / _ / -_)')
time.sleep(0.3)
print('/_/|_/___/_,_/__/')
print('nn')
time.sleep(1)
while True:
prompt = input('>>> ')
if prompt == '/ip-?':
print(socket.gethostbyname(socket.getfqdn()))
elif prompt == '/hn-?':
print(socket.gethostname())
elif prompt == '/h':
print('n/ip-? --- IP ADDRESS')
print('/hn-? --- HOST NAME')
print('/e --- EXIT')
print('n')
elif prompt == '/ip->':
#THIS IS WHERE THE PROBLEM IS OCCURING
out = subprocess.run(['ping', 'google.com'], capture_output=True)
print(out.stdout.decode())
elif prompt == '/e':
break
Обратная трассировка:
Traceback (most recent call last):
File "D:PYTHONPROJECTSeverything.py", line 33, in <module>
out = subprocess.run(['ping', 'google.com'], capture_output=True)
File "C:Program FilesWindowsAppsPythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0libsubprocess.py", line 489, in run
with Popen(*popenargs, **kwargs) as process:
File "C:Program FilesWindowsAppsPythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0libsubprocess.py", line 854, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:Program FilesWindowsAppsPythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0libsubprocess.py", line 1307, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] The system cannot find the file specified
Комментарии:
1. Похоже, что программа не может найти программу «ping». Это на ПУТИ?
2. Я просмотрел учебник в Интернете для этой конкретной области кода, и они не показали создание другой программы под названием «ping». Я самоучка, поэтому у меня нет ресурсов, таких как учитель или коллега, которые могли бы помочь мне с подобными вещами, поэтому я пришел к переполнению стека/
3. В данный момент у меня не открыты окна, и я не помню, является ли
ping.exe
это частью базового дистрибутива Windows. Я думаю , что это так. Можете ли вы запуститьping
в командной строке? Вы можете увидетьC:WindowsSystem32ping.exe
, существует ли он, и если да, используйте его полное имя пути.4. Да, теперь это работает! Спасибо: D Если вы хотите оставить это в качестве ответа, я приму его. Еще раз спасибо.
Ответ №1:
ping.exe
должно быть в системном каталоге C:WindowsSystem32
. Если не удается запустить без пути, добавьте его. Вы можете использовать косые черты, чтобы избежать потенциальных проблем с использованием python
для экранирования специальных символов.
out = subprocess.run(['C:/Windows/System32/ping', 'google.com'], capture_output=True)
Обратите внимание, что это делает вашу программу только Windows. В Linux / Mac также есть программы «ping», поэтому вы можете сделать это резервным вариантом, если простой «ping» не работает. Программа «ping» может иметь разные параметры и выходные данные в зависимости от платформы, поэтому вам может потребоваться сначала проверить версию платформы и реализовать две разные версии вашего кода.