2009-04-24 36 views
2

我希望能够在Mac OS X下获得无线接口的速度。我有一个perl脚本,可以获取无线网卡的其他信息,但我仍然需要获得连接速度。如何从Perl中获得苹果机场的速度?

目前我已静态设置机场速度:$ airport_rate =“54”; (见下面的代码)。

我可以使用什么命令来获取机场内置卡的速度,或者我在下面的代码中丢失了什么。谢谢

编辑:此代码现在的作品。谢谢。 示例输出的脚本:

ETHERNET IP : 192.168.2.7 
AIRPORT IP : 192.168.2.4 
AIRPORT STATUS : CONNECTED 
     SSID : Forcefield 
     RATE : 54 Mb/s 
#!/usr/bin/perl                           
# a little script to get your network status                    

$en0_info = `ifconfig en0 | grep "inet" | grep -v 127.0.0.1`; 
$en1_info = `ifconfig en1 | grep "inet" | grep -v 127.0.0.1`; 
$airport_info = `/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I`; 

if($en0_info) 
{ 
    $en0_info =~ /inet (.*) netmask/s; 
    $output .= "ETHERNET IP : $1\n"; 
} 
else 
{ $output .= "ETHERNET IP : INACTIVE\n"; } 

if($en1_info) 
{ 
    $en1_info =~ /inet (.*) netmask/s; 
    $en1_info = $1; 
    $airport_info =~ /lastTxRate: (\d\d\d)/s; 
    $airport_rate = $1; 
    $airport_info =~ /BSSID(.*?)SSID: (.*?)\n/s; 
    $airport_SSID = $2; 
    $output .= "AIRPORT IP : $en1_info\n"; 
    $output .= "AIRPORT STATUS : CONNECTED\n"; 
    $output .= "  SSID : $airport_SSID\n"; 
    $output .= "  RATE : $airport_rate Mb/s\n"; 
} 
else 
{ 
    $output .= "AIRPORT STATUS : INACTIVE\n"; 
} 

print "$output"; 

回答

6

我惊讶地发现,这是不平凡的。 然而,雅虎的快速应用程序!搜索发现了一个指向'airport'命令行脚本的指针,看起来它会给你想要的答案。请参阅http://osxdaily.com/2007/01/18/airport-the-little-known-command-line-wireless-utility/

简而言之,/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I将为您提供您所寻求的。而且它似乎也不需要root权限。