BASH: utilização de link de internet

Sem muito o que fazer aqui no trampo… :p fiz esse shell script básico que mostra em tempo real o seu consumo de banda de internet. Não é lá essas coisas, mas o que vale é a intenção… 😀


* Melhorias serão bem-vindas. 😉

#!/bin/bash
#
# Copyright 2013 Sandro Marcell <smarcell@mail.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301, USA.
#
PATH='/bin:/usr/bin:/usr/local/bin'
 
trap 'echo -ne "\033[?12l\033[?25h"; exit 0' SIGINT SIGTERM
 
if [ $# -eq 0 ]; then
    echo "Uso: $0 -u K|M|G -i interface"
    exit 1
fi
 
unidade=''
iface=''
 
while [ $# -ne 0 ]; do
    case "$1" in
        '-u') shift; unidade="$1";;
        '-i') shift; iface="$1";;
           *) echo "Uso: $0 -u K|M|G -i interface"; exit 1
    esac
    shift
done
 
echo "$unidade" | grep -Eq '(K|M|G)' || { echo "Use somente K(ilo), M(ega) ou G(iga)"; exit 1; }
[ -d "/sys/class/net/$iface" ] || { echo "${iface}: interface nao encontrada"; exit 1; }
 
function calculoConsumoBanda {
    case "$unidade" in
        'K') bc <<< "scale = 2; $1 / 128";;
        'M') bc <<< "scale = 2; $1 * 8 / 1000000";;
        'G') bc <<< "scale = 2; $1 * 8 / 1000000000"
    esac
}

echo -ne "\033[?25l" 

while true; do
    exec 3< /sys/class/net/${iface}/statistics/rx_bytes; read -u3 rx_1; exec 3<&-
    exec 3< /sys/class/net/${iface}/statistics/tx_bytes; read -u3 tx_1; exec 3<&-
    sleep 1
    exec 3< /sys/class/net/${iface}/statistics/rx_bytes; read -u3 rx_2; exec 3<&-
    exec 3< /sys/class/net/${iface}/statistics/tx_bytes; read -u3 tx_2; exec 3<&-      
    (( rx_dif_bytes = rx_2 - rx_1 ))
    (( tx_dif_bytes = tx_2 - tx_1 ))      
    rx_bd_consumida=$(calculoConsumoBanda $rx_dif_bytes)
    tx_bd_consumida=$(calculoConsumoBanda $tx_dif_bytes)
    echo -ne "${iface}: Bits recebidos - \033[1;33m$rx_bd_consumida\033[00m ${unidade}bit/s\033[0K | Bits enviados - \033[1;33m$tx_bd_consumida\033[00m ${unidade}bit/s\033[0K\r"
done

* Versão atualizada em 24/08/2015

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s