GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara mendapatkan statistik jaringan real-time di Linux dengan format KB/MB/Bytes dan untuk port tertentu atau processID aplikasi?

Aplikasi Anda mungkin mengirimkan paket ke nomor port UDP atau TCP tertentu atau ke alamat IP tertentu.

Oleh karena itu, Anda dapat menggunakan sesuatu seperti TCPdump untuk menangkap lalu lintas tersebut.

TCPdump tidak memberi Anda statistik real-time yang Anda inginkan, tetapi Anda dapat memberi outputnya ke sesuatu yang memang demikian (saya akan mencoba memperbarui jawaban ini dengan jawaban nanti).

Pembaruan:

$ sudo tcpdump -i eth1 -l -e -n | ./netbps
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
11:36:53    2143.33 Bps
11:37:03    1995.99 Bps
11:37:13    2008.35 Bps
11:37:23    1999.97 Bps
11:37:33    2083.32 Bps
131 packets captured
131 packets received by filter
0 packets dropped by kernel

Saya menghentikannya setelah satu menit dengan menekan Ctrl+C.

Anda perlu menambahkan ekspresi filter yang sesuai di akhir tcpdump perintah untuk hanya menyertakan lalu lintas yang dihasilkan oleh aplikasi Anda (mis. port 123 )

Program netbps apakah ini:

#!/usr/bin/perl
use strict;
use warnings;
use Time::HiRes;

my $reporting_interval = 10.0; # seconds
my $bytes_this_interval = 0;
my $start_time = [Time::HiRes::gettimeofday()];

STDOUT->autoflush(1);

while (<>) {
  if (/ length (\d+):/) {
    $bytes_this_interval += $1;
    my $elapsed_seconds = Time::HiRes::tv_interval($start_time);
    if ($elapsed_seconds > $reporting_interval) {
       my $bps = $bytes_this_interval / $elapsed_seconds;
       printf "%02d:%02d:%02d %10.2f Bps\n", (localtime())[2,1,0],$bps;
       $start_time = [Time::HiRes::gettimeofday()];
       $bytes_this_interval = 0;
    }
  }
}

Itu hanya contoh, sesuaikan dengan selera.


Penggunaan seperti di bawah ini dari folder yang sama:

Untuk memeriksa pengemas per antarmuka:./netpps.sh eth0

Untuk memeriksa kecepatan per antarmuka:./netspeed.sh eth0

Mengukur Paket per Detik pada Antarmuka netpps.sh sebagai nama file

#!/bin/bash

INTERVAL="1"  # update interval in seconds

if [ -z "$1" ]; then
        echo
        echo usage: $0 [network-interface]
        echo
        echo e.g. $0 eth0
        echo
        echo shows packets-per-second
        exit
fi

IF=$1

while true
do
        R1=`cat /sys/class/net/$1/statistics/rx_packets`
        T1=`cat /sys/class/net/$1/statistics/tx_packets`
        sleep $INTERVAL
        R2=`cat /sys/class/net/$1/statistics/rx_packets`
        T2=`cat /sys/class/net/$1/statistics/tx_packets`
        TXPPS=`expr $T2 - $T1`
        RXPPS=`expr $R2 - $R1`
        echo "TX $1: $TXPPS pkts/s RX $1: $RXPPS pkts/s"
done

Mengukur Bandwidth Jaringan pada Antarmuka netspeed.sh sebagai nama file

#!/bin/bash

INTERVAL="1"  # update interval in seconds

if [ -z "$1" ]; then
        echo
        echo usage: $0 [network-interface]
        echo
        echo e.g. $0 eth0
        echo
        exit
fi

IF=$1

while true
do
        R1=`cat /sys/class/net/$1/statistics/rx_bytes`
        T1=`cat /sys/class/net/$1/statistics/tx_bytes`
        sleep $INTERVAL
        R2=`cat /sys/class/net/$1/statistics/rx_bytes`
        T2=`cat /sys/class/net/$1/statistics/tx_bytes`
        TBPS=`expr $T2 - $T1`
        RBPS=`expr $R2 - $R1`
        TKBPS=`expr $TBPS / 1024`
        RKBPS=`expr $RBPS / 1024`
        echo "TX $1: $TKBPS kB/s RX $1: $RKBPS kB/s"
done

Silakan rujuk situs ini untuk info lebih lanjut http://xmodulo.com/measure-packets-per-second-throughput-high-speed-network-interface.html


Paling mudah digunakan dan paling mudah untuk mengontrol output dan mengarahkan ulang ke file untuk logging berkelanjutan:

ifstat

Mungkin hadir dengan sebagian besar distribusi linux, dan dapat diinstal dengan brew di mac


Linux
  1. Memulai NetworkManager di Linux

  2. Cara Memeriksa Port Terbuka di Linux dengan netstat, lsof, dan nmap

  3. Bagaimana agar hanya pengguna, pid dan perintah yang dijalankan untuk proses tertentu? (Ubuntu 11.10)

  1. Linux – Bagaimana Cara Berhenti Berbagi Jaringan Untuk Proses Saat Ini?

  2. cara menggunakan netstat pada port tertentu di Linux

  3. Bagaimana cara melihat di Linux antarmuka jaringan dan alamat IP sumber apa yang digunakan untuk rute ke host tujuan tertentu?

  1. Linux – Bagaimana Agar Grindeq (Plugin lateks Untuk Word) Bekerja Dengan Word Dalam Anggur?

  2. Bagaimana Anda mendapatkan ikon, tipe MIME, dan aplikasi yang terkait dengan file di Desktop Linux?

  3. Cara mendapatkan statistik sistem dengan node.js