web-dev-qa-db-fra.com

Obtenir l'utilisation du réseau à partir d'une date spécifique sur le terminal

Sur vnstat je peux obtenir le mois, le jour, l'heure ou les 10 meilleurs jours d'utilisation du réseau. Est-ce que je peux quand même obtenir l'utilisation du réseau à une date précise sur le terminal? par vnstat ou un autre outil?

Modifier:

Je veux avoir l'utilisation de date spécifique à la date actuelle ou entre deux dates et pas seulement une date spécifique.

2
ICE

vnStat prend en charge les requêtes spécifiques aux plages de dates et d'heures pour toutes les sorties de liste à partir de la version 2.0 (actuellement disponible en version bêta). Cette version permet également de configurer librement les durées de conservation des données, évitant ainsi toute limite de 30 jours codée en dur pour les données quotidiennes. Voir le notes de modification et le référentiel GitHub pour plus de détails.

$ vnstat --days --begin 2018-04-02 --end 2018-04-06

 em1  /  daily

      day        rx      |     tx      |    total
-------------------------+-------------+---------------------------------------
 2018-04-02      4.88 GB |     1.95 GB |     6.83 GB  %%%%%%%%%%%%%%%%%:::::::
 2018-04-03      3.56 GB |     1.09 GB |     4.66 GB  %%%%%%%%%%%%::::
 2018-04-04      3.91 GB |     2.07 GB |     5.99 GB  %%%%%%%%%%%%%%:::::::
 2018-04-05      2.61 GB |     1.63 GB |     4.24 GB  %%%%%%%%%:::::
 2018-04-06      3.29 GB |     1.43 GB |     4.72 GB  %%%%%%%%%%%:::::
-------------------------+-------------+---------------------------------------
  sum of 5      18.25 GB |     8.17 GB |    26.43 GB
2
Teemu Toivola

Copiez le code ci-dessous dans un fichier. J'utilise ~/bin/vnstat-hist.sh. Après avoir sauvegardé le fichier, marquez-le comme exécutable en utilisant:

chmod a+x ~/bin/vnstat.sh

Pour exécuter le script, appelez-le avec le paramètre pour le nombre de jours. Par exemple, pour aujourd'hui, utilisez vnstat-hist.sh 1. Pour les cinq derniers jours (y compris aujourd'hui), utilisez:

$ vnstat-hist.sh 5
vnstat -d 5 day summary
     2018-04-27     6.21 GiB |    1.83 GiB |    8.04 GiB |  780.45 kbit/s
     2018-04-28     5.97 GiB |    1.05 GiB |    7.02 GiB |  681.20 kbit/s
     2018-04-29     8.27 GiB |    1.47 GiB |    9.74 GiB |  945.40 kbit/s
     2018-04-30     4.09 GiB |    1.35 GiB |    5.44 GiB |  527.97 kbit/s
     2018-05-01     1.36 GiB |    1.13 GiB |    2.49 GiB |  315.40 kbit/s
Total:32.73

vnstat-hist.sh Script Bash

Notez que ce programme peut être plus court, mais espérons que la conception sera plus facile à suivre pour les novices.

#!/bin/bash

# NAME: vnstat-hist.sh
# PATH: $HOME/bin
# DESC: Written for AU Q&A: https://askubuntu.com/questions/1030345/get-network-usage-from-specific-date-on-terminal/1030399?noredirect=1#comment1675801_1030399
#       Get total vnStat bytes from x days ago to today.
#       Parameter 1 = number of days: 1= today, 2= yesterday + today, etc.

# DATE: May 1, 2018.

re='^[0-9]+$'
if ! [[ $1 =~ $re ]] ; then
   echo "Error: Parameter 1 must be number of days" >&2; exit 1
fi

# Get body of vnstat -d into file, ie strip headings and total lines
# First get count of all lines, then delete 2 total lines & 5 heading lines

vnstat -d > /tmp/vnstat-hist.txt
NumLines=$(cat /tmp/vnstat-hist.txt | wc -l)
NumLines=$(( NumLines - 2))
cat /tmp/vnstat-hist.txt | head -n $NumLines > /tmp/vnstat-hist2.txt
NumLines=$(( NumLines - 5))
cat /tmp/vnstat-hist2.txt | tail -n $NumLines > /tmp/vnstat-hist.txt

MaxDays=$(cat /tmp/vnstat-hist.txt | wc -l)

DayCount="$1"
(( $DayCount > $MaxDays )) && DayCount=$MaxDays
cat /tmp/vnstat-hist.txt | tail -n $DayCount  > /tmp/vnstat-hist2.txt
echo "vnstat -d $DayCount day summary"
awk '{sum+=$8;} END { print "Total:" sum }1' /tmp/vnstat-hist2.txt

# Clean up temp files
rm -f /tmp/vnstat-hist.txt
rm -f /tmp/vnstat-hist2.txt

exit 0
1