5 votes

Comment puis-je utiliser le terminal pour surveiller le trafic total des interfaces réseau en Mb ?

Je voudrais utiliser le terminal pour surveiller le trafic réseau sur une interface donnée, en vue de fournir des alertes lorsque certains totaux cumulatifs ont été dépassés.

Le script a besoin d'obtenir des statistiques à partir du moment où il est lancé, et il n'est pas nécessaire de stocker les valeurs pour une référence future, ou de conserver les valeurs lors des redémarrages, etc. Je voudrais que la sortie soit lisible par l'homme, donc des valeurs en Gb ou Mb, pas en paquets ou en octets.

L'objectif est de pouvoir inclure ce script dans une application Automator qui s'exécutera en arrière-plan et ouvrira une boîte de dialogue à des seuils définis pour m'alerter lorsque j'approche d'une limite de téléchargement, ce qui me permettra de choisir de déconnecter le modem, etc.

Je ne souhaite pas télécharger d'outils ou d'applications, et souhaite simplement utiliser les outils qu'une installation standard fournit pour le terminal. Obtenir des données d'une application via applescript serait acceptable, mais seulement si cette application est également un outil standard, comme le moniteur d'activité.

1 votes

Je suis allé jusqu'à netstat -i -I en0 -b qui vous donne les octets entrants (ainsi que d'autres statistiques) pour en0 (remplacez votre interface ici). Vous devrez évidemment utiliser d'autres outils UNIX pour analyser la sortie, convertir en MB/GB, etc. mais cela pourrait être un début si vous n'avez pas déjà fait mieux ! Je suis surpris que quelqu'un n'ait pas déjà créé un script de ce type car cela semble être une chose utile à avoir !

4voto

Demian Turner Points 809

On dirait que ordinateur portable est ce que vous recherchez. Lancez-la avec le paramètre help pour voir les options.

nettop -nc -m route semble être le meilleur indicateur de trafic global, mais nécessite un script supplémentaire pour analyser la sortie pour vous.

0 votes

Je n'ai pas de Mac, donc je ne peux pas tester, mais si c'est quelque chose comme 'top', est-ce que cela ne va pas produire un écran constamment mis à jour que je dois quitter ? Comment pourrais-je extraire un chiffre de la sortie, effectuer un calcul dessus, puis récupérer à nouveau le chiffre et répéter etc ? Je connais vaguement cet outil, mais je ne suis pas sûr qu'il soit adapté à la création de scripts. Vos commentaires sont les bienvenus - merci.

0 votes

Vous avez raison, la sortie interactive ne sera pas utile pour ce dont vous avez besoin, je ne peux pas penser au bon utilitaire pour le moment.

0 votes

Après avoir essayé moi-même, cette commande ne surveille que les octets transférés par la passerelle par défaut... le trafic vers/depuis les hôtes du réseau local (ou plus précisément, du sous-réseau local) n'est pas affiché.

2voto

Rich Points 2429
_delta_t=20
_interface=en1
netstat -i -I ${_interface} -b -w ${_delta_t} |
    awk 'BEGIN {
        printf ("instantaneous (byte/s)\tcumulated (Mbytes)\nin\tout\t\tin\tout\n")
    }{
        if ($0 !~ /(input|packets)/) {
            # get input & output bytes
            inb=$3 ; oub=$6 ;
            # accumulate them
            cuminb+=$3 ; cumoub+=$6 ;
            printf("%8d%8d\t", inb/'${_delta_t}', oub/'${_delta_t}')
            printf("%8.3f%8.3f\n", cuminb/1000000, cumoub/1000000)
        }
    }'

0 votes

® binarybob pour le moteur de base.

-1voto

user83562 Points 1

Une commande utile est sudo tcpdump -i en0 - v vous devrez fournir votre mot de passe système -

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X