2013-04-16 17 views
0

我有一個任務,我應該在linux中創建一個perl腳本,它將提供類似於linux命令「ifconfig」的輸出。我已經開始編寫腳本,但是我反覆弄錯了。我希望在糾正我的代碼方面提供一些幫助,使其完全可用。該程序需要做什麼特定的需要一個外圍。例如當我運行腳本時,它會詢問接口名稱,如果我在「eth0」中鍵入接口名稱,那麼它應該輸出,就好像我在命令「ifconfig eth0」中鍵入一樣。這個任務要求我使用這兩個包Net :: Int :: Stats和Net :: Ifconfig :: Wrapper。 我到目前爲止的代碼如下。我真的很感謝所有幫助如何在Linux中使用perl程序顯示IFconfig信息

#!/usr/bin/perl 
use strict; 
use warnings; 
use Net::Int::Stats; 
use Net::Ifconfig::Wrapper; 

my $int   = 'eth0'; 
my $stat   = 'rx_packets'; 
my $Iface   = $ARGV[0]; 
my $get_Iface_data = Net::Int::Stats->new(); 
my $Iface_Info  = Net::Ifconfig::Wrapper::Ifconfig('list', '', '', ''); 

my $rx_packets = $get_Iface_data->value($Iface, 'rx_packets'); 
while(my ($Addr, $Mask) = each %{ $Info->{$int}{'inet'} }) { 
    print "\tinet $Mask $Addr"; 
} 
+0

user218001,你在ETH 0 「ETH 0」,或爲eth0傳遞?可能只有eth0纔是正確的。 – kjprice

+0

您能否提供您無法弄清的具體錯誤? – DVK

+0

此外,我打賭你要在該打印語句上換行:'print'\ tinet $ Mask $ Addr \ n「;' – kjprice

回答

0

這裏是工作示例:

#!/usr/bin/perl 
use strict; 
use warnings; 
use Net::Int::Stats; 
use Net::Ifconfig::Wrapper; 

my $Iface = $ARGV[0]; 
my $get_Iface_data = Net::Int::Stats->new(); 
my $rx_packets = $get_Iface_data->value($Iface, 'rx_packets'); 
my $Iface_Info = Net::Ifconfig::Wrapper::Ifconfig('list', '', '', ''); 
while(my ($Addr, $Mask) = each %{ $Iface_Info->{$Iface}{'inet'} }) { 
    print "\tinet $Mask $Addr\n"; 
} 
相關問題