아래는 리눅스에서 동작하는 트래픽 사용량을 초단위로 출력하는 perl 프로그램 소스입니다. 소스에서 eth0 만 검사하게 되어 있으므로 다른 디바이스를 점검하고 싶으시면 관련된 부분을 수정해 주셔야 합니다.
=======================================================================================================================
#!/usr/bin/perl
use strict;
my $iPeriod = 1;
my $strDevice = "eth0";
# 32bit 뺄셈
sub Minus32bit()
{
my ( $iFirst, $iSecond ) = @_;
my $iResult;
if( $iFirst >= $iSecond )
{
$iResult = $iFirst - $iSecond;
}
else
{
$iResult = ( 4294967296 - $iFirst ) + $iSecond;
}
return $iResult;
}
# 전역변수
my $bIsFirst = 1;
my ( $iRecvBytes, $iRecvPackets, $iSendBytes, $iSendPackets );
my ( $iOldRecvBytes, $iOldRecvPackets, $iOldSendBytes, $iOldSendPackets );
my ( $iRecvBps, $iRecvPps, $iSendBps, $iSendPps );
my @arrSplit = ();
my @arrList = ();
my @arrTime;
my $strText;
while(1)
{
@arrTime = localtime(time);
open(FILE,"/proc/net/dev") or die "/proc/net/dev open error: $!";
while(<FILE>)
{
next if( !($_ =~ $strDevice) );
@arrSplit = split( /:/, $_ );
$arrSplit[1] =~ s/^\s*(.*?)\s*$/$1/;
@arrList = split( /\s+/, $arrSplit[1] );
if( $bIsFirst == 1 )
{
$iOldRecvBytes = $arrList[0];
$iOldRecvPackets = $arrList[1];
$iOldSendBytes = $arrList[8];
$iOldSendPackets = $arrList[9];
$bIsFirst = 0;
last;
}
$iRecvBytes = &Minus32bit( $arrList[0], $iOldRecvBytes );
$iRecvPackets = &Minus32bit( $arrList[1], $iOldRecvPackets );
$iSendBytes = &Minus32bit( $arrList[8], $iOldSendBytes );
$iSendPackets = &Minus32bit( $arrList[9], $iOldSendPackets );
$iOldRecvBytes = $arrList[0];
$iOldRecvPackets = $arrList[1];
$iOldSendBytes = $arrList[8];
$iOldSendPackets = $arrList[9];
$iRecvBps = ( $iRecvBytes * 8 ) / $iPeriod;
$iRecvPps = $iRecvPackets / $iPeriod;
$iSendBps = ( $iSendBytes * 8 ) / $iPeriod;
$iSendPps = $iSendPackets / $iPeriod;
$strText = sprintf( "%04d-%02d-%02d %02d:%02d:%02d [in] %9d bps %6d pps [out] %9d bps %6d pps\n"
, $arrTime[5] + 1900, $arrTime[4] + 1, $arrTime[3]
, $arrTime[2], $arrTime[1], $arrTime[0]
, $iRecvBps, $iRecvPps, $iSendBps, $iSendPps );
print "$strText";
last;
}
close(FILE);
sleep(1);
}
[출처] 리눅스 트래픽 사용량 출력하기 |작성자 까미유