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.
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
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 BashNotez 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