IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AppleScript Discussion :

Récupérer le texte de l'état réseau dans System Preferences


Sujet :

AppleScript

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Juillet 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2017
    Messages : 11
    Points : 7
    Points
    7
    Par défaut Récupérer le texte de l'état réseau dans System Preferences
    Bonjour à tous !

    Je me suis mis à AppleScript récemment, car j'ai un projet particulier en tête.

    A moment donné, j'aimerais que le script soit conditionné par l'état du WiFi : connecté ou pas.
    Pour cela , j'essaye de récupérer le texte de cette étiquette (pas sûr que ça s'appelle ainsi) dans les préférences réseau :
    Nom : Capture d’e?cran 2017-07-30 a? 12.10.55.png
Affichages : 292
Taille : 100,1 Ko

    J'ai donc essayé ce code, mais ça ne fonctionne pas car je ne connais pas le nom du "texte" que j'essaye de désigner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    tell application "System Preferences"
    	set the current pane to pane id "com.apple.preference.network"
    	tell application "System Events"
    		tell process "System Preferences"
    			tell window "Réseau"
    				tell text field 1
    					display dialog name
    				end tell
    			end tell
    		end tell
    	end tell
    	delay 1
    	quit
    end tell
    Et avec Accessibility Inspector, je n'obtiens pas vraiment de résultat :

    Nom : Capture d’e?cran 2017-07-30 a? 11.22.56.png
Affichages : 268
Taille : 176,8 Ko

    Quelqu'un pourrait-il m'aider ?
    L'objectif de ça, dans le script final, est de déclencher une action uniquement si le WiFi est connecté à un réseau...
    (J'ai bien pensé au ping, mais ça prend trop de temps pour le script global que je compte faire et l'objectif n'est pas de checker la connection Internet, mais bien la connexion à un réseau local.)

    Merci !

  2. #2
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 602
    Points : 1 239
    Points
    1 239
    Par défaut
    Bonjour,
    De retour de vacances, je vois que ta question n'a toujours pas reçu de réponse.
    Si tu débutes en programmation, je te déconseille fortement d'utiliser les éléments d'interface utilisateur (champs, boutons,...). L'auteur du logiciel (ici Apple) peut les changer lors des versions suivantes et rendre ton script inopérant.Tu dois donc limiter l'utilisation du GUI scripting (c'est le terme) aux seuls cas où aucune autre solution ne peut être utilisée.
    Pour ta demande, il existe un utilitaire en ligne de commande, gracieusement fourni par Apple, qui permet de configurer et lire les paramètres des services de réseau. Il s'agit de "Networksetup".
    Si tu ouvres le Terminal, et tape networksetup -h, puis return, tu verras que c'est un véritable couteau suisse pour le réseau.
    Apple fournit également un framework pour Airport. Celui-ci est dédié au Wi-Fi.Sur le Terminal, tu tapes l'instruction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I
    Le résultat sera soit un message indiquant que le Wi-Fi est off, soit le nom du réseau.
    En chaînant ce résultat avec une commande "awk" pour rechercher le mot SSID (le nom du réseau Wi-Fi) et l'extraire, la commande se complique un peu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I | awk '/ SSID/ {print substr($0, index($0, $2))}'
    Essaye sur le Terminal et tu verras. N'oublie pas les espaces et apostrophes !
    Le résultat est le nom du réseau Wi-Fi connecté ou vide si pas de connection. Le tout à la vitesse Unix...!

    In finé, comme pour toute commande Unix, cela peut être exécuté dans un script via la commande do shell script, qui renvoie le résultat comme il est affiché sur le Terminal.
    Donc ton script Applescript sera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set monSSID to do shell script "/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I | awk '/ SSID/ {print substr($0, index($0, $2))}'"
    (n'oublie pas non plus les guillemets)

    Dans la suite de ton code, tu n'as plus qu'à tester la variable monSSID qui est vide ou contient le nom du Wi-Fi connecté.Je précise qu'il est possible, un jour, que Apple change ce FrameWork, mais c'est peu probable à moyen terme. Cet utilitaire existe au moins depuis la version OS Tiger (peut être même avant 2004 !), alors que l'interface utilisateur des préférences Apple change un peu près tout les 3/4 ans.

    Cordialement

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Juillet 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2017
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Ouah, super, PBELL, maintenant j'ai tout ce qu'il faut !
    Merci aussi pour l'éclairage sur la durée de vie du code

Discussions similaires

  1. Récupérer le nom du fichier en cours dans une variable.
    Par quiky dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 06/05/2009, 13h28
  2. Récupérer le nom d'un onglet + informations dans la feuille
    Par spico45 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/07/2008, 16h46
  3. Réponses: 2
    Dernier message: 23/04/2008, 11h35
  4. [C] Récupérer le nom de ses différents réseau !
    Par darkwall_37 dans le forum Windows
    Réponses: 2
    Dernier message: 28/10/2007, 23h42
  5. Récupérer le nom de la connexion réseau
    Par xufux dans le forum Windows
    Réponses: 6
    Dernier message: 05/12/2005, 15h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo