Я хочу получить ежедневное использование Интернета от своей машины Ubuntu в использовании формата Json Vnstat. Для выборки ежедневного использования в терминале, я использую следующую команду:
vnstat -d -i wlp2s0
вывод будет:
wlp2s0 / daily
day rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
,ۋ6� 60 KiB | 27 KiB | 87 KiB | 0.01 kbit/s
,ۋ6� 333.00 MiB | 170.16 MiB | 503.16 MiB | 47.71 kbit/s
,ۋ6� 626.23 MiB | 39.64 MiB | 665.87 MiB | 63.13 kbit/s
,ۋ6� 172.47 MiB | 177.32 MiB | 349.79 MiB | 33.16 kbit/s
,ۋ6� 11.88 MiB | 1.66 MiB | 13.54 MiB | 1.28 kbit/s
,ۋ6� 0 KiB | 0 KiB | 0 KiB | 0.00 kbit/s
,ۋ6� 380.47 MiB | 21.22 MiB | 401.69 MiB | 38.09 kbit/s
,ۋ6� 173.32 MiB | 14.71 MiB | 188.03 MiB | 17.83 kbit/s
,ۋ6� 0 KiB | 0 KiB | 0 KiB | 0.00 kbit/s
,ۋ6� 0 KiB | 0 KiB | 0 KiB | 0.00 kbit/s
,ۋ6� 17.49 MiB | 4.33 MiB | 21.82 MiB | 2.07 kbit/s
,ۋ6� 70 KiB | 73 KiB | 143 KiB | 0.01 kbit/s
,ۋ6� 15.12 MiB | 1.95 MiB | 17.07 MiB | 1.62 kbit/s
,ۋ6� 18.45 MiB | 5.86 MiB | 24.31 MiB | 3.55 kbit/s
------------------------+-------------+-------------+---------------
estimated 27 MiB | 7 MiB | 34 MiB |
Таким образом, как получить Только общее количество, rx и значение tx, которое является estimated 27 MiB | 7 MiB | 34 MiB |
от вышеупомянутого вывода в Json
формат в форме:
{"daily_usage":{"rx":27,"tx":7,"total":34}}
На самом деле я пытаюсь передать этот json формат сценарию Python более поздний Thaks заранее!!
vnstat
имеет опции произвести в машиночитаемых форматах. От man vnstat
:
--json mode
Show database content for selected interface or all interfaces
in json format. All traffic values in the output are in KiB. An
optional mode parameter can be used for limiting the output to
only selected information. Everything is shown by default.
Setting mode to 'h' will output only hours, 'd' days, 'm' months
and 't' the top 10.
--xml mode
Show database content for selected interface or all interfaces
in xml format. All traffic values in the output are in KiB. An
optional mode parameter can be used for limiting the output to
only selected information. Everything is shown by default.
Setting mode to 'h' will output only hours, 'd' days, 'm' months
and 't' the top 10.
Просто сделайте vnstat -i wlp2s0 --json d
и проанализируйте его в Python для получения, какой бы ни поле Вам нужно. -d
не нужно, и будет проигнорирован, начиная с --json
опция берет mode
аргумент.
#!/bin/bash
#get the last line
IN=$(vnstat -d | (tail -n1))
#remove estimated
INR=${IN//estimated}
#convert to array
arrOUT=(${INR//|/ })
#format the output
OUTPUT="{\"daily_usage\":{\"rx\": ${arrOUT[0]}, \"tx\": ${arrOUT[2]}, \"total\": ${arrOUT[4]} }"
OUTPUT2="{\"daily_usage\":{\"rx\": ${arrOUT[0]} ${arrOUT[1]}, \"tx\": ${arrOUT[2]} ${arrOUT[3]}, \"total\": ${arrOUT[4]} ${arrOUT[5]} }"
#pick one
echo $OUTPUT
echo $OUTPUT2
your_script.sh
bash your_script.sh
@Sjn73, таким образом, @muru имеет верное представление.
Только вещь, к которой я хотел (но не может, еще) комментарий с - то, что можно просто записать: vnstat --json d
Это переключится mode
упомянутый в документации ежедневной газете только. Обратите внимание, что это - вход к --json
флаг, не то же самое как -d
флаг.
Everything is shown by default.
Setting mode to 'h' will output only hours, 'd' days, 'm' months
and 't' the top 10.