Как мне узнать скорость Apple Airport из Perl? - PullRequest
2 голосов
/ 24 апреля 2009

Я хотел бы иметь возможность получить скорость беспроводного интерфейса в Mac OS X. У меня есть сценарий 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";

1 Ответ

6 голосов
/ 24 апреля 2009

Я был удивлен, обнаружив, что это нетривиально. Тем не менее, быстрое приложение Yahoo! Поиск нашел указатель на скрипт командной строки '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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...