Come posso usare Terminal per monitorare un traffico totale di interfacce di rete in Mb


5

Vorrei utilizzare il terminale per monitorare il traffico di rete su una determinata interfaccia, al fine di fornire avvisi quando sono stati superati determinati totali cumulativi.

Lo script deve acquisire statistiche dal punto in cui è stato avviato e non vi è alcun obbligo di memorizzare valori per riferimento futuro, o mantenere valori su riavvii ecc. Vorrei che l'output fosse leggibile dall'uomo, quindi valori in Gb o Mb , non pacchetti o byte.

L'intenzione è quella di essere in grado di includere questo script in un'applicazione di Automator che verrà eseguita in background e di aprire una finestra di dialogo alle soglie impostate per avvisarmi quando mi avvicino a un limite di download, consentendo di scegliere di disconnettere il modem, ecc.

Non desidero scaricare strumenti o applicazioni e desidero semplicemente utilizzare gli strumenti forniti da un'installazione standard per il terminale. Ottenere dati da un'applicazione via applescript sarebbe accettabile, ma solo se quell'applicazione è anche uno strumento standard, come il monitor delle attività.


1
Sono arrivato fino a netstat -i -I en0 -b che ti dà byte in entrata (insieme ad altre statistiche) per en0 (sostituisci qui la tua interfaccia). Dovresti ovviamente utilizzare altri strumenti UNIX per analizzare l'output, convertire in MB / GB ecc. Ma potrebbe essere un inizio se non lo hai già fatto meglio! Sono sorpreso che qualcuno là fuori non abbia già creato uno script di questo tipo perché sembra una cosa utile da avere!
binarybob

Risposte:


4

Sembra nettop è quello che stai cercando. Inizia con il parametro help per vedere le opzioni.

nettop -nc -m route sembra essere il miglior indicatore generale del traffico, ma necessita di script aggiuntivi per analizzare l'output per te


Non in un mac, quindi non posso testare, ma se è qualcosa di simile a "top", non produrrà uno schermo in costante aggiornamento da cui devo uscire? Come posso estrarre una figura dall'output, eseguire un calcolo su di essa, quindi recuperare la figura e ripetere ecc.? Consapevoli dello strumento vagamente, ma non sono sicuro che sia adatto allo scripting. Commenti benvenuti - grazie.
stuffe

Hai ragione, l'output interattivo non ti aiuterà per quello che ti serve, non riesci a pensare all'utilità giusta al momento
demianturner

Avendo appena provato da solo, questo comando controlla solo i byte trasferiti attraverso il gateway predefinito ... il traffico verso / da LAN (o più specificamente, subnet-local) host non viene visualizzato.
Jeremy

2
_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)
        }
    }'

® binarybob ☺ per il core engine.
daniel Azuelos

-1

un comando utile è sudo tcpdump -i en0 - v dovrai fornire la password del tuo sistema -

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.