Ottieni parte del risultato della riga di comando in OS X

1

Vorrei utilizzare la seguente riga di comando per ottenere il canale Wi-Fi corrente.

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

Vorrei usare esattamente questo comando, perché è possibile che sto usando più parti del risultato. Quindi ho bisogno di un AppleScript che restituisca solo il canale Wi-Fi corrente del comando.

Sono grato per qualsiasi aiuto. :)

    
posta user121028 01.07.2015 - 15:31
fonte

2 risposte

2

Ecco un esempio In AppleScript che utilizza la risposta di tron_jones.

Il risultato del comando è impostato su _channel e quindi utilizzato in una finestra di dialogo solo per mostrare il risultato. Ovviamente _channel può essere utilizzato in vari modi.

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

Nota: potrebbe essere necessario fornire il nome di percorso completo per grep eo awk . Anche le doppie virgolette attorno a grep "channel:" sono state sostituite con virgolette singole, quindi il comando potrebbe essere incapsulato tra virgolette per compilare a causa delle virgolette singole nel comando awk .

A proposito, il comando può essere ridotto al seguente usando asterischi ( * ) per abbreviare il percorso scritto al comando airport :

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

Per abbreviare ulteriormente la linea di comando, grazie a bmike, in un terminale usa il seguente comando per creare il collegamento simbolico:

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

Quindi, come esempio in Terminal, tutto ciò che devi fare è digitare: airport -I

O in un comando AppleScript utilizzando l'esempio precedente:

set _channel to do shell script "airport -I | grep 'channel:' | awk '{print $2}'"
    
risposta data 01.07.2015 - 16:09
fonte
4

Raccomando di utilizzare " grep "e" awk "comandi da bash. Puoi usarli per analizzare i dati forniti in bash. Ecco un esempio usando i dettagli che hai descritto sopra.

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

Fai un favore e sym collega il binario a / usr / local / bin in modo da poter digitare solo aeroporto (o scriptarlo)

airport -I | grep "channel" | awk '{print $2}'
    
risposta data 01.07.2015 - 15:49
fonte

Leggi altre domande sui tag