Intereting Posts
Как я могу исправить ошибку «Проблема с MergeList» или «файл состояния не удалось разобрать» при попытке выполнить обновление? Почему обновление влияет на загрузку пакетов полного кеша Путь, указанный в переменной среды, отображается после перезагрузки. единство-приветствие: отсутствующие индикаторы на экране входа в систему после выхода из системы Каков правильный путь к завершению работы ubuntu с помощью командной строки? Ubuntu GNOME 16.10 экранная ориентация спонтанно меняется Отсутствие значков в обновлении 11.10 Офлайн-режим Clipit? / etc / localtime не ссылка Объем микрофона очень низкий Как контролировать и регистрировать аппаратные температуры и нагрузку сервера Как решить «Дополнительный мусор в конце файла» при использовании apt? «Io: postinst-must-call-ldconfig» при создании пакета Как найти ASN IP-адреса с помощью команды «dig»? Установка Qtbase5 значительно изменила графику

Простой скрипт для контроля состояния беспроводной сети

Я хочу создать скрипт, который контролирует состояние сети (я не знаю, есть ли какие-либо программы, которые уже делают то, что я хочу сделать еще лучше).

Я заинтересован только в мониторинге уровня сигнала и битрейта устройства, подключенного к точке доступа, и я пытаюсь создать сценарий .sh, чтобы сделать это, например, на минуту, и создать выходной файл, например, в этом формате:

TIME (s) SIGNAL STRENGTH (dBm) BITRATE (Mbit/s) 00 -53 54 05 -50 300 10 -55 54 15 -60 36 

Эти данные можно получить из команды:

 $ iw dev wlan1 station dump Station 12:34:56:78:9a:bc (on wlan0) inactive time: 304 ms rx bytes: 18816 rx packets: 75 tx bytes: 5386 tx packets: 21 signal: -29 dBm tx bitrate: 54.0 MBit/s 

Или команда:

 $ iw dev wlan0 link Connected to 04:21:b0:e8:c8:8b (on wlan0) SSID: attwifi freq: 2437 RX: 2272 bytes (18 packets) TX: 232 bytes (3 packets) signal: -57 dBm tx bitrate: 36.0 MBit/s 

Я не знаю, объяснил ли я это хорошо, я хочу каким-либо образом получить эти данные и сохранить их в файле (например, .txt). Я хочу периодически записывать нужные мне данные (Tx bitrate и signal) в файл, поэтому с течением времени файл станет больше.

Способ получения данных я не знаю, что будет, я знаю, что эти данные появляются в командах, которые я поставил выше.

Я хотел бы, чтобы сценарий записывал время начала (или запрашивал имя), не перезаписывая старые данные.

Может ли кто-нибудь помочь мне в создании сценария, чтобы получить то, что я хочу? И еще, как я могу создать таймер? Или, если это не так, может кто-нибудь сказать мне какой-нибудь инструмент, чтобы что-то сделать? Кто-нибудь знает инструмент для выполнения того, что я хочу делать?

Это должно сделать:

 #!/bin/bash printf '%s\nTIME (s)\tSIGNAL STRENGTH (dBm)\tBITRATE (MBit/s)\n' "$(date --iso-8601=seconds)" >>log for ((i=0; i<=60; i=i+5)); do iw dev wlp3s0f0 station dump | awk -vt=$i '$1=="signal:"{s=$2} $2=="bitrate:"{b=$3} END {printf "%d\t%d\t%.1f\n", t, s, b}' >>log sleep 5 done 

Он добавит текущее время в формате ISO 8601, за которым следует этот заголовок, к файлу с именем log в текущем рабочем каталоге и добавит соответствующий вывод iw dev wlan1 station dump в этом формате к нему каждые 5 секунд в течение 60 секунд.

Пример запуска на моей машине:

 % bash script.sh ^C % cat log 2016-03-29T20:00:22+0200 TIME (s) SIGNAL STRENGTH (dBm) BITRATE (MBit/s) 0 63 54.0 5 40 54.0 10 63 54.0 

Чтобы напечатать также битрейт RX:

 #!/bin/bash printf '%s\nTIME (s)\tSIGNAL STRENGTH (dBm)\tTX BITRATE (MBit/s)\tRX BITRATE (MBit/s)\n' "$(date --iso-8601=seconds)" >>log for ((i=0; i<=60; i=i+5)); do iw dev wlp3s0f0 station dump | awk -vt=$i '$1=="signal:"{s=$2} $1="tx"&&$2=="bitrate:"{tb=$3} $1="rx"&&$2=="bitrate:"{rb=$3} END {printf "%d\t%d\t%.1f\t%.1f\n", t, s, tb, rb}' >>log sleep 5 done