вывод в форме json

Сохраненная часть каждого захваченного пакета определяется snaplen опцией. В некоторых дистрибутивах значение по умолчанию snaplen установлено приблизительно на 68 байтов. Пакеты являются затем усеченными к 68 байтам, скрывая часть полезной нагрузки. Можно сохранить полные пакеты путем установки snaplen на 0 (т.е. максимум) следующим образом: tcpdump -s0 -w test.pcap -i eth0

3
26.03.2013, 09:46
4 ответа

Возможно, это, считайте информацию с proc фс и используйте до н.э для вычисления:

#!/bin/bash
tot=$(awk '{ if (/MemTotal:/) {print $2} }' </proc/meminfo)
free=$(awk '{ if (/MemFree:/) {print $2} }' </proc/meminfo)
pers=$(echo "scale=0; 100 - 100 * $free / $tot" | bc)
echo '{"Memory":"'$pers'"}'
2
27.01.2020, 21:17
  • 1
    Обратите внимание, что Вашей формуле нужна незначительная корректировка. Вопрос использовал “100 * используемый / общее количество”, в то время как Вы используете “100 * свободный / общее количество”. –  manatwork 26.03.2013, 10:20

При использовании awk не обязательно, я предпочитаю ruby для форматирования JSON. Намного дольше то, что пустое awk сценарий, но легче расширить его позже:

ruby -rjson -nae 'BEGIN{j={}};j["Memory"]="#{(100*$F[2].to_f/$F[1].to_f).to_i}%"if/^Mem/;END{puts j.to_json}' <(free -m)
2
27.01.2020, 21:17

С остротой:

awk '$1=="MemTotal:"{t=$2} $1=="MemFree:"{f=$2}END{printf "{\042Memory\042:\042%s\042}\n",  int(100 - 100 * f / t)}' /proc/meminfo
0
27.01.2020, 21:17

Я написал командный -линейный инструмент под названием jc. Он может преобразовывать вывод многих инструментов командной строки в JSON.

$ jc free | jq
[
  {
    "type": "Mem",
    "total": 3861332,
    "used": 338196,
    "free": 2840616,
    "shared": 11848,
    "buff_cache": 682520,
    "available": 3222232
  },
  {
    "type": "Swap",
    "total": 2097148,
    "used": 0,
    "free": 2097148
  }
]

https://github.com/kellyjonbrazil/jc

0
27.01.2020, 21:17

Теги

Похожие вопросы