Bash пока делай а если с Telegram API - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь контролировать поток 24/7.Для этого Iam отслеживает сетевую скорость моей малины.

Скорость сети в кбит / с:

(old="$(</sys/class/net/eth0/statistics/rx_bytes)"; while $(sleep 1); do  now=$(</sys/class/net/eth0/statistics/rx_bytes); echo $((($now-$old)/1024)); old=$now; done)

Вывод в кбит / с:

    216
    384
    288
    360
    336
    360

Теперь я хочуиспользуйте Telegram API для запуска, если скорость упадет ниже 100 кбит / с

Telegram Code:

TELEGRAM=$(curl -s -X POST 'https://api.telegram.org/<BOT ID>:<API KEY>/sendMessage?chat_id=<ID>&text="Stream has problems"')

Для этого мне нужен цикл while do и условие if.

С уважением, Goeks1

РЕДАКТИРОВАТЬ ////

$(old="$(</sys/class/net/eth0/statistics/rx_bytes)"; while $(sleep 1); do  now=$(</sys/class/net/eth0/statistics/rx_bytes); if (( (now-old)/1024 < 1000 )); then $TELEGRAM ; fi echo $((($now-$old)/1024)); old=$now; done)

1 Ответ

0 голосов
/ 26 сентября 2018

Я решаю это.Решение ниже.

#!/bin/bash

OLD="$(</sys/class/net/eth0/statistics/rx_bytes)"
i=1
        while $(sleep 1m); do
NOW=$(</sys/class/net/eth0/statistics/rx_bytes)

if (( (NOW-OLD)/1024 > 100 )) ; then

        remainder=$(( i % 3 ))
        [ "$remainder" -eq 0 ] && curl -s -X POST 'https://api.telegram.org/<BOT ID>:<API KEY>/sendMessage?chat_id=<ID>&text="Stream has problems"'
        i=$(( i + 1 ))
fi
OLD=$NOW
done
...