2 votes

airport -s -x renvoie une sortie tronquée

Je suis l'auteur de wifi-wand un utilitaire de ligne de commande Ruby qui peut être utilisé comme un moyen simple de gérer le WiFi du Mac ( https://github.com/keithrbennett/wifiwand ) sans avoir à apprendre toutes les différentes commandes sous-jacentes de Mac OS et leurs options.

Pour obtenir une liste de noms de réseaux, j'avais l'habitude d'utiliser airport -s mais il s'est avéré que cela ne fonctionne pas, car les noms de réseau sont justifiés à droite (avec un remplissage à gauche), il n'y a aucun moyen de savoir si les espaces en tête font partie du nom ou s'ils sont juste là pour le formatage. J'utilise donc airport -s -x pour obtenir les informations affichées en (pseudo-)XML.

Cela fonctionne presque toujours, mais j'ai remarqué qu'à plusieurs endroits, s'il y a un réseau d'imprimantes HP, la sortie se termine quelque part dans cet élément. Par exemple :

           <key>SSID_STR</key>
           <string>DIRECT-0E-HP OfficeJet 4650</string>
           <key>WPS_PROB_RESP_IE</key>
            <dict>
                    <key>IE_KEY_WPS_AP_SETUP_LOCKED</key>
                    <true/>
                    <key>IE_KEY_WPS_CFG_METHODS</key>
                    <integer>0</integer>
                    <key>IE_KEY_WPS_DEV_NAME</key>
                    <string>DIRECT-0E-HP OfficeJet 4650</string>
                    <key>IE_KEY_WPS_DEV_NAME_DATA</key>
                    <data>
                    RElSRUNULTBFLUhQIE9mZmljZUpldCA0NjUw
                    </data>
                    <key>IE_KEY_WPS_MANUFACTURER</key>
                    <string>HP</string>
                    <key>IE_KEY_WPS_MODEL_NAME</key>
                    <string>OfficeJet 4650 series

Sans le -x l'option, la sortie fonctionne, mais, comme je l'ai dit, il y a le problème de l'espace qui m'empêche de m'y fier :

                        SSID BSSID             RSSI CHANNEL HT CC SECURITY (auth/unicast/group)
                NETGEAR25-5G a0:04:60:1a:5a:89 -67  153,-1  Y  -- WPA2(PSK/AES/AES) 
 DIRECT-0E-HP OfficeJet 4650 ac:e2:d3:a9:d9:0f -90  6       Y  -- WPA2(PSK/AES/AES) 
                      iPhone b2:8d:6c:9f:dd:00 -49  1       Y  US WPA2(PSK/AES/AES) 
                   NETGEAR25 a0:04:60:1a:5a:87 -62  9       Y  -- WPA2(PSK/AES/AES) 
                   CBCI-4F58 60:3d:26:57:4f:5c -86  6       Y  -- WPA2(PSK/AES/AES) 

Qu'est-ce qui se passe et comment puis-je régler ce problème ? Merci d'avance.

(Le problème Github est à https://github.com/keithrbennett/wifiwand/issues/20 .)

Cette erreur liée à HP est confirmée à https://clburlison.com/MacOS-wifi-scanning/ qui dit :

Lorsque vous exécutez airport avec l'option --xml, la commande ne parvient pas à produire des données xml correctement formatées...une idée est que les imprimantes HP diffusent un SSID avec des caractères non sécurisés....

[ce qui est proche, mais c'est le nom du modèle, et non le SSID, qui semble générer l'erreur].

1voto

moodforaday Points 2633

En partant de l'idée d'essayer de faire correspondre le BSSID et de le supprimer à la fin de la ligne, j'ai trouvé ceci :

airport -s \
| sed 's# ..:..:..:..:..:.. .*##g ; s#^ *##g ; 1,1d' \
| sort -u

En sed est en fait en 3 parties :

  1. Faites correspondre le BSSID en recherchant 2 caractères séparés par des deux-points, répétés 5 fois, puis tout à la fin de la ligne ( .* )

  2. Correspondance depuis le début de la ligne ( ^ ) et ensuite un nombre quelconque d'espaces ( .* )

  3. Suppression de la première ligne ( 1,1d ) qui contient les informations d'en-tête dont nous ne nous soucions pas : "SSID BSSID RSSI CHANNEL HT CC SECURITY (auth/unicast/group)"

En sort -u permet de s'assurer que chaque SSID n'apparaît qu'une seule fois.

Ce n'est peut-être pas l'idéal, mais ça peut être une option.

La seule erreur possible à laquelle je peux penser est que je pense que parfois les BSSID peuvent être réduits à 1 caractère au lieu de 2 si le premier caractère est un zéro, mais je ne suis pas sûr que ce soit le cas. airport fait ça, et aucun des réseaux auxquels j'ai accès ne comporte de zéro, donc je ne peux pas le tester. Peut-être que quelqu'un qui s'y connaît mieux en regex peut en suggérer une meilleure que celle que j'ai.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X