Возникли проблемы с попыткой проанализировать данные при проверке связи с IP-адресом. Я пытался проанализировать данные из результатов ping и отформатировать их следующим образом:
IP, TimeToPing (ms)
10.1.2.3, 10
Вот где скрипт находится до сих пор:
import sys
import ipaddress
import subprocess
import os
import re
#Main routine
def main():
address = sys.argv[1]
pingthis = ['ping', '-c', '1', address]
header = "IP, TimeToPing (ms)"
subprocess.call(pingthis)
re.search(r'.* time=(.*) ms', os.system('ping -c1'))
if __name__ == "__main__":
main()
Доступ к выводу ping
Вы имеете в виду, что спрашиваете об этом? stackoverflow.com/questions/4760215/…
дал subprocess.check_output(['ping']) и получил AttributeError: модуль 'subprocess' не имеет атрибута 'check_ouput'
В pypi есть модуль pingparsing (pypi.org/project/pingparsing), который, вероятно, сделает то, что вы хотите.






Это то, что вы хотите?
import re
import subprocess
import sys
from tabulate import tabulate
def main():
address = sys.argv[1]
pingthis = ['ping', '-c', '1', address]
r = (
subprocess
.run(
pingthis,
stdout=subprocess.PIPE,
check=True,
)
.stdout
.decode('utf-8')
)
table = tabulate(
[[address, (re.search(r'time=(\d+)', r).group(1))]],
headers=["IP", "TimeToPing (ms)"],
tablefmt = "simple",
)
print(table)
if __name__ == "__main__":
main()
Выход для python main.py 8.8.8.8
IP TimeToPing (ms)
------- -----------------
8.8.8.8 14
Спасибо за помощь и ваше время. Мне нужно будет проверить tabulate и stdoutput=subprocess.PIPE и прочитать об этом.
Ваш вопрос, как вы можете разделить строку по разделителю (например,
', 'в этом случае)? Или как получить доступ к выходу подпроцесса?