OS Xのコマンドラインの結果の一部を取得する


1

現在のWi-Fiチャネルを取得するには、次のコマンドラインを使用します。

/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I

結果のより多くの部分を使用している可能性があるため、このコマンドを正確に使用したいと思います。そのため、コマンドの現在のWi-Fiチャネルのみを返すAppleScriptが必要です。

私はどんな助けにも感謝しています。:)

回答:


2

tron_jonesの答えを使用したAppleScriptの例を次に示します。

コマンドの結果はに設定され_channel、結果を表示するためだけにダイアログボックスで使用されます。明らかに_channelさまざまな方法で使用できます。

set _channel to do shell script "/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I | grep 'channel:' | awk '{print $2}'"
display dialog "Wi-Fi is using Channel: " & _channel

注:の完全修飾パス名grepまたは指定awkする必要がある場合があります。また、前後の二重引用符grep "channel:"は単一引用符に置き換えられたため、コマンド内の単一引用符のためにコンパイルするために、コマンドを二重引用符でカプセル化できましたawk

ところで、コマンドは、アスタリスク(*)を使用して次のように縮小し、コマンドへの書き込みパスを短縮できますairport

set _channel to do shell script "/S*/L*/P*/A*/V*/C*/R*/airport -I | grep 'channel:' | awk '{print $2}'"

bmikeのおかげでコマンドラインをさらに短くするには、ターミナルで次のコマンドを使用してシンボリックリンクを作成します。

sudo ln -s "/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport" "/usr/local/bin/airport"

次に、ターミナルの例として、必要なことは次のように入力するだけです: airport -I

または、前の例を使用したAppleScriptコマンドで:

set _channel to do shell script "airport -I | grep 'channel:' | awk '{print $2}'"

何のため$2ですか?
user121028

これは、への入力レコードの2番目のフィールドですawk.../airport -I | grep "channel:"出力しchannel: 11、それをパイプしawk、そのまま " 11" を出力します$2awk '{print $1}'結果が「channel:」だったと言った場合 。
user3439894

お返事ありがとうございます。それは動作し、非常に役に立ちました。:)
user121028

たぶんこれで私を助けることができます:AppleScriptで完全な結果からリストを作成するにはどうすればよいですか?でas list エラーが発生します。問題は、戻る前にコンマがないことだと思います。
user121028

1
@ user121028質問ごとに1つの質問-また、コメントで新しい質問をすることは非常に貧弱なフォームと見なされます。あなたはコメントで尋ねる以外にその病気の兆候を見せていませんが、それは「助けの吸血鬼」のように見えます。
bmike

4

bashから" grep "および " awk "コマンドを使用することをお勧めします。これらを使用して、bashで指定されたデータを解析できます。上記の詳細を使用した例を次に示します。

/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I | grep "channel" | awk '{print $2}'

自分でお願いし、バイナリを/ usr / local / binにsymリンクして、airportを入力(またはスクリプト)できるようにします

airport -I | grep "channel" | awk '{print $2}'

どこに変更でき/user/local/binますか?新しいターミナルウィンドウでは機能しません。
user121028

@ user121028、ターミナルで、次のコマンドを使用してシンボリックリンクを作成します。sudo ln -s "/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport" "/usr/local/bin/airport"次に、例として、入力する必要があるのは次のairport -I
とおりです。– user3439894

なぜgrepand を使用しawkますか? airport -I | awk '/channel/{print $2}'
マークセットチェル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.