كيف يمكنني الحصول على الشبكة الحالية واجهة الإنتاجية الإحصاءات على Linux/UNIX ؟ [مغلقة]

StackOverflow https://stackoverflow.com/questions/596590

  •  09-09-2019
  •  | 
  •  

سؤال

أدوات مثل MRTG توفر الإنتاجية شبكة / عرض النطاق الترددي الرسوم البيانية للشبكة الحالية على استخدام واجهات محددة ، مثل eth0.كيف يمكنني إرجاع هذه المعلومات في سطر الأوامر في لينكس linux/UNIX ؟

ويفضل أن يكون هذا سيكون بدون تثبيت أي شيء بخلاف ما هو متاح على نظام القياسية.

هل كانت مفيدة؟

المحلول

يمكنك تحليل إخراج ifconfig

نصائح أخرى

iftop does for network usage what top(1) does for CPU usage -- http://www.ex-parrot.com/~pdw/iftop/

لا أعرف كيف هو "قياسي" IFTOP هو، لكنني كنت قادرا على تثبيته yum install iftop على فيدورا.

حصلت SAR؟ من المرجح نعم إذا كنت تستخدم Rhel / centos.

لا حاجة إلى الثنائيات Priv، Dorky Binaries، البرامج النصية المخربلة، libpcap، إلخ.

$ sar -n DEV 1 3
Linux 2.6.18-194.el5 (localhost.localdomain)    10/27/2010

02:40:56 PM     IFACE   rxpck/s   txpck/s   rxbyt/s   txbyt/s   rxcmp/s   txcmp/s  rxmcst/s
02:40:57 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:40:57 PM      eth0  10700.00   1705.05 15860765.66 124250.51      0.00      0.00      0.00
02:40:57 PM      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00

02:40:57 PM     IFACE   rxpck/s   txpck/s   rxbyt/s   txbyt/s   rxcmp/s   txcmp/s  rxmcst/s
02:40:58 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:40:58 PM      eth0   8051.00   1438.00 11849206.00 105356.00      0.00      0.00      0.00
02:40:58 PM      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00

02:40:58 PM     IFACE   rxpck/s   txpck/s   rxbyt/s   txbyt/s   rxcmp/s   txcmp/s  rxmcst/s
02:40:59 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:40:59 PM      eth0   6093.00   1135.00 8970988.00  82942.00      0.00      0.00      0.00
02:40:59 PM      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00

Average:        IFACE   rxpck/s   txpck/s   rxbyt/s   txbyt/s   rxcmp/s   txcmp/s  rxmcst/s
Average:           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:         eth0   8273.24   1425.08 12214833.44 104115.72      0.00      0.00      0.00
Average:         eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00

كتبت هذا الغبي السيناريو منذ زمن طويل ، فإنه يعتمد على شيء سوى Perl و لينكس≥2.6:

#!/usr/bin/perl

use strict;
use warnings;

use POSIX qw(strftime);
use Time::HiRes qw(gettimeofday usleep);

my $dev = @ARGV ? shift : 'eth0';
my $dir = "/sys/class/net/$dev/statistics";
my %stats = do {
    opendir +(my $dh), $dir;
    local @_ = readdir $dh;
    closedir $dh;
    map +($_, []), grep !/^\.\.?$/, @_;
};

if (-t STDOUT) {
    while (1) {
        print "\033[H\033[J", run();
        my ($time, $us) = gettimeofday();
        my ($sec, $min, $hour) = localtime $time;
        {
            local $| = 1;
            printf '%-31.31s: %02d:%02d:%02d.%06d%8s%8s%8s%8s',
            $dev, $hour, $min, $sec, $us, qw(1s 5s 15s 60s)
        }
        usleep($us ? 1000000 - $us : 1000000);
    }
}
else {print run()}

sub run {
    map {
        chomp (my ($stat) = slurp("$dir/$_"));
        my $line = sprintf '%-31.31s:%16.16s', $_, $stat;
        $line .= sprintf '%8.8s', int (($stat - $stats{$_}->[0]) / 1)
            if @{$stats{$_}} > 0;
        $line .= sprintf '%8.8s', int (($stat - $stats{$_}->[4]) / 5)
            if @{$stats{$_}} > 4;
        $line .= sprintf '%8.8s', int (($stat - $stats{$_}->[14]) / 15)
            if @{$stats{$_}} > 14;
        $line .= sprintf '%8.8s', int (($stat - $stats{$_}->[59]) / 60)
            if @{$stats{$_}} > 59;
        unshift @{$stats{$_}}, $stat;
        pop @{$stats{$_}} if @{$stats{$_}} > 60;
        "$line\n";
    } sort keys %stats;
}

sub slurp {
    local @ARGV = @_;
    local @_ = <>;
    @_;
}

يقرأ فقط من /sys/class/net/$dev/statistics كل ثانية ، بطباعة الأرقام الحالية و متوسط معدل التغير:

$ ./net_stats.pl eth0
rx_bytes                       :  74457040115259 4369093 4797875 4206554 364088
rx_packets                     :     91215713193   23120   23502   23234  17616
...
tx_bytes                       :  90798990376725 8117924 7047762 7472650 319330
tx_packets                     :     93139479736   23401   22953   23216  23171
...
eth0                           : 15:22:09.002216      1s      5s     15s     60s

                                ^ current reading  ^-------- averages ---------^

يمكنك تحليل / بروك / صافي / ديف.

nload. هي أداة رائعة لرصد عرض النطاق الترددي في الوقت الفعلي وتثبيتها بسهولة في Ubuntu أو Debian مع تثبيت Sudo Apt-احصل على تثبيت NLoad.

Device eth0 [10.10.10.5] (1/2):
=====================================================================================
Incoming:


                               .         ...|    
                               #         ####|   
                           .. |#|  ...   #####.         ..          Curr: 2.07 MBit/s
                          ###.###  #### #######|.     . ##      |   Avg: 1.41 MBit/s
                         ########|#########################.   ###  Min: 1.12 kBit/s
             ........    ###################################  .###  Max: 4.49 MBit/s
           .##########. |###################################|#####  Ttl: 1.94 GByte
Outgoing:
            ##########  ###########    ###########################
            ##########  ###########    ###########################
            ##########. ###########   .###########################
            ########### ###########  #############################
            ########### ###########..#############################
           ############ ##########################################
           ############ ##########################################
           ############ ##########################################  Curr: 63.88 MBit/s
           ############ ##########################################  Avg: 32.04 MBit/s
           ############ ##########################################  Min: 0.00 Bit/s
           ############ ##########################################  Max: 93.23 MBit/s
         ############## ##########################################  Ttl: 2.49 GByte

أداة أخرى ممتازة هي iftop., ، أيضا الحصول على شقة بسهولة:

             191Mb      381Mb                 572Mb       763Mb             954Mb     
└────────────┴──────────┴─────────────────────┴───────────┴──────────────────────
box4.local            => box-2.local                      91.0Mb  27.0Mb  15.1Mb
                      <=                                  1.59Mb   761kb   452kb
box4.local            => box.local                         560b   26.8kb  27.7kb
                      <=                                   880b   31.3kb  32.1kb
box4.local            => userify.com                         0b   11.4kb  8.01kb
                      <=                                  1.17kb  2.39kb  1.75kb
box4.local            => b.resolvers.Level3.net              0b     58b    168b
                      <=                                     0b     83b    288b
box4.local            => stackoverflow.com                   0b     42b     21b
                      <=                                     0b     42b     21b
box4.local            => 224.0.0.251                         0b      0b    179b
                      <=                                     0b      0b      0b
224.0.0.251           => box-2.local                         0b      0b      0b
                      <=                                     0b      0b     36b
224.0.0.251           => box.local                           0b      0b      0b
                      <=                                     0b      0b     35b


─────────────────────────────────────────────────────────────────────────────────
TX:           cum:   37.9MB   peak:   91.0Mb     rates:   91.0Mb  27.1Mb  15.2Mb
RX:                  1.19MB           1.89Mb              1.59Mb   795kb   486kb
TOTAL:               39.1MB           92.6Mb              92.6Mb  27.9Mb  15.6Mb

لا تنسى المرافق الكلاسيكية والقوية على مرافق Netstat على كبار السن * Nix!

  • dstat - يجمع بين VMSTAT، IOSTAT، IFSTAT، معلومات Netstat والمزيد
  • iftop - أداة عرض النطاق الترددي للشبكة مذهلة لتحليل ما يحدث حقا على ETH
  • netio - يقيس صافي الإنتاجية للشبكة عبر TCP / IP
  • inq - CLI استكشاف الأخطاء وإصلاحها الأداة المساعدة التي تعرض معلومات عن التخزين، عادة ما يكون symmetrix. بشكل افتراضي، إرجاع Inq اسم الجهاز ومعرف Symmetrix و Symmetrix Lun والقدرة.
  • send_arp - يرسل بث ARP على جهاز الشبكة المحدد (الإعدادات الافتراضية إلى ETH0)، والإبلاغ عن تعيين عنوان IP القديم والجديد الجديد إلى عنوان MAC.
  • EtherApe - هي شاشة شبكة رسومية ل UNIX على غرار etherman. يتميز بطبقة رابط، أوضاع IP و TCP، فإنه يعرض نشاط الشبكة بيانيا.
  • iptraf - شاشة مراقبة مرور IP التي تظهر معلومات عن حركة مرور IP تمر عبر شبكتك.

المزيد من التفاصيل:http://felipeferreira.net/؟p=1194.

حصلت على سيناريو باش Quick'n'n'dirty آخر لذلك:

#!/bin/bash
IF=$1
if [ -z "$IF" ]; then
        IF=`ls -1 /sys/class/net/ | head -1`
fi
RXPREV=-1
TXPREV=-1
echo "Listening $IF..."
while [ 1 == 1 ] ; do
        RX=`cat /sys/class/net/${IF}/statistics/rx_bytes`
        TX=`cat /sys/class/net/${IF}/statistics/tx_bytes`
        if [ $RXPREV -ne -1 ] ; then
                let BWRX=$RX-$RXPREV
                let BWTX=$TX-$TXPREV
                echo "Received: $BWRX B/s    Sent: $BWTX B/s"
        fi
        RXPREV=$RX
        TXPREV=$TX
        sleep 1
done

انها تفكر في ذلك sleep 1 سوف تستمر في الواقع ثانية واحدة بالضبط، وهي ليست صحيحة، ولكن جيدة بما يكفي لتقييم عرض النطاق الترددي الخام.

شكرا ل /sys/class/net/<interface>! :)

إلى جانب IFTOP و IPTRAF، تحقق أيضا:

  • bwm-ng (مراقب النطاق الترددي الجيل القادم)

و / أو

  • cbm (لون عرض النطاق الترددي)

المرجع: http://www.powercram.com/2010/01/standwidth-manitoring-tools-for-ubuntu.html.

إذا كنت ترغب فقط في الحصول على قيمة يمكنك استخدام بسيط قذيفة oneliner مثل هذا:

S=10; F=/sys/class/net/eth0/statistics/rx_bytes; X=`cat $F`; sleep $S; Y=`cat $F`; BPS="$(((Y-X)/S))"; echo $BPS

وسوف تظهر لك متوسط "تلقى بايت في الثانية" لمدة 10 ثانية (يمكنك تغيير الفترة المتغيرة S=10 المعلمة و يمكنك قياس تنتقل بت في الثانية بدلا من تلقى بت في الثانية باستخدام tx_bytes بدلا من rx_bytes).لا تنسى أن تغيير eth0 أن جهاز الشبكة الذي تريد مراقبة.

بالطبع أنت لا تقتصر على عرض متوسط معدل (كما ورد في إجابات أخرى ، وهناك غيرها من الأدوات التي سوف تظهر لك أجمل بكثير الإخراج), ولكن هذا الحل هو النصية بسهولة أن تفعل أشياء أخرى.

على سبيل المثال التالي شيل (تقسيمها إلى عدة خطوط على القراءة) سيتم تنفيذ offlineimap العملية فقط عند 5 دقائق سيرا على متوسط سرعة نقل قطرات أدناه 10kBPS (ويفترض عند بعض عرض النطاق الترددي تستغرق عملية التشطيبات):

#!/bin/sh
S=300; F=/sys/class/net/eth0/statistics/tx_bytes
BPS=999999
while [ $BPS -gt 10000 ]
do
  X=`cat $F`; sleep $S; Y=`cat $F`; BPS="$(((Y-X)/S))";
  echo BPS is currently $BPS
done
offlineimap

علما بأن /sys/class/... هو لينكس محددة (وهو موافق المرسل لم تختار linux الوسم) و يحتاج غير قديمة النواة.قذيفة القانون نفسه هو /bin/sh متوافق (وذلك ليس فقط باش, ولكن داش وغيرها /bin/sh تطبيقات العمل) و /bin/sh هو الشيء الذي هو في الحقيقة دائما مثبتة.

انا يعجبني iptraf ولكن ربما عليك تثبيته ويبدو أنه لا يتم الحفاظ عليه بنشاط بعد الآن.

أجد dstat لتكون جيدة جدا. يجب أن تكون مثبتة رغم ذلك. يمنحك طريقة مزيد من المعلومات مما تحتاج. سوف تعطيك Netstat معدلات الحزمة ولكن ليس Bandwith أيضا. netstat -s.

يمكنك استخدام IPERF إلى أداء الشبكة القياسية (أقصى سرعة ممكنة). انظر الروابط التالية للحصول على التفاصيل:

http://en.wikipedia.org/wiki/iperf.

https://iperf.fr/

https://code.google.com/p/iperf/

لم أستطع الحصول على برنامج نصي تحليل IFConfig للعمل بالنسبة لي على AMI، لذلك حصلت على هذا العمل الذي تم تطبيق حركة المرور المستلمة أكثر من 10 ثوان

date && rxstart=`ifconfig eth0 | grep bytes | awk '{print $2}' | cut -d : -f 2` && sleep 10 && rxend=`ifconfig eth0 | grep bytes | awk '{print $2}' | cut -d : -f 2` && difference=`expr $rxend - $rxstart` && echo "Received `expr $difference / 10` bytes per sec"

آسف، إنه رخيص للغاية وسيئت ولكنه يعمل!

ifconfig -a
ip -d link
ls -l /sys/class/net/ (physical and virtual devices)
route -n

إذا كنت تريد إخراج (IFConfig -a) بتنسيق JSON، يمكنك استخدامه هذه (بيثون)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top