# Script réseau



## Gregoryen (14 Novembre 2020)

Bonjour,

Je suis sur Mac, il est branché en Ethernet + Wifi à ma box.

J'utilise parfois le partage de connexion de mon iPhone pour certaines occasions, notamment pour télécharger des fichiers qui sont plus rapides que mon ADSL.

Seulement je suis obligé de mettre l'iPhone en haut de la liste dans l'ordre des services pour qu'il soit prioritaire sinon c'est la connexion Ethernet qui prend le relais.

Mais je n'ai pas envie de débrancher le câble Ethernet car mon bureau est disposé de sortes que c'est un peu inaccessible et pénible.

Est-il possible de créer un script, qui permet :

1- Mettre la WIFI en priorité
2- Si possible, se connecter au réseau " iPhone X de Gregoryen " sinon je ferais cette étape manuellement
3- Désactiver l'Ethernet

J'aurais juste à cliquer sur le fichier qui lance le script.

À l'inverse, j'aimerais un second script qui lui réactive l'Ethernet, le met en priorité, et qui se connecte en WIFI au wifi de ma box.

Merci de votre aide !


----------



## Membre supprimé 1129907 (14 Novembre 2020)

Pour être sûr d'utiliser le bon paramètre dans les commandes plus bas

```
networksetup -listallnetworkservices
```

Résultat :

```
An asterisk (*) denotes that a network service is disabled.
Connecteur C
Ethernet
Wi-Fi
Bluetooth PAN
Thunderbolt Bridge
```

La première commande désactive l'Ethernet, la seconde l'active :

```
networksetup -setnetworkserviceenabled "Ethernet" off
networksetup -setnetworkserviceenabled "Ethernet" on
```

Cela ne change rien à l'ordre des services. Chez moi il se remet bien en 2ème une fois réactivé :




Pour le reste, je n'ai pas vu comment faire. Il faudrait chercher un peu plus.


----------



## Gregoryen (14 Novembre 2020)

Merci beaucoup !


----------



## Garkam (14 Novembre 2020)

Gregoryen a dit:


> Bonjour,
> 
> Je suis sur Mac, il est branché en Ethernet + Wifi à ma box.


Bonjour, 
Quel est l’interêt d’être branché en Ethernet et Wifi sur la même Box ?


----------



## Gregoryen (14 Novembre 2020)

Garkam a dit:


> Bonjour,
> Quel est l’interêt d’être branché en Ethernet et Wifi sur la même Box ?


Certains services comme AirDrop doivent avoir la wifi d'activé.


----------



## Garkam (14 Novembre 2020)

Ha oui c'est vrai, complètement oublié, en même temps je ne l'utilise pas


----------



## Gregoryen (14 Novembre 2020)

Garkam a dit:


> Ha oui c'est vrai, complètement oublié, en même temps je ne l'utilise pas


Je m'en sers énormément surtout avec l'app Dropzone qui me change la vie !


----------



## Garkam (14 Novembre 2020)

il y a un moyen simple de réaliser ce que tu veux, c'est via les préférences réseau, onglet Configuration -> Modifier les configurations ajouter une nouvelle configuration (le + en bas) et de créer  ton partage de connexion en sélectionnant le réseau, pour ça il faut que ton partage soit actif pour être paramétré . Ne pas oublier de cocher "Se connecter automatiquement à ce réseau"





ensuite avec la commande 
	
	



```
scselect
```
 tu peux basculer d'une config à une autre.


```
iMac:~ GARKAM$ scselect
Defined sets include: (* == current set)
 * D5F4D48F-81C7-472E-90D8-548E80C2BE4A    (Automatic)
   2E1A33A7-4B8A-45A0-98DB-922E6C4AB9DF    (Maison)
iMac:~ GARKAM$ scselect Maison
CurrentSet updated to 2E1A33A7-4B8A-45A0-98DB-922E6C4AB9DF (Maison)
```


----------



## Gregoryen (14 Novembre 2020)

Garkam a dit:


> il y a un moyen simple de réaliser ce que tu veux, c'est via les préférences réseau, onglet Configuration -> Modifier les configurations ajouter une nouvelle configuration (le + en bas) et de créer  ton partage de connexion en sélectionnant le réseau, pour ça il faut que ton partage soit actif pour être paramétré . Ne pas oublier de cocher "Se connecter automatiquement à ce réseau"
> Voir la pièce jointe 198555
> 
> 
> ...



Merci !
En effet j'avais réalisé un truc un peu similaire, j'avais créé un deuxième Wifi dans le + en bas sans passer par la configuration. Je voulais faire en sorte qu'un premier WIFI soit associé a la Box et le deuxième à l'iPhone. Ensuite dans l'ordre de priorité j'ai mis :
Wifi iPhone > Ethernet > Wifi maison.

Ce que je voulais faire c'est que le premier Wifi ne se connecte pas automatiquement à la box, mais que sur le deuxième oui.

Seulement, ce paramètre de connexion auto s'applique sur les deux...

Pour ton astuce, ça me fait la même chose, que ce soit ma configuration de base, ou celle créé. Mais merci, je trouve ça plus propre et mieux !
Au pire je n'aurais qu'à sélectionner l'iPhone dans la wifi et lancer ce script ou le faire manuellement 

Pour la commande, il faudrait que j'arrive à rajouter le fait qu'il doit se connecter au Wifi XXX.

Merci !


----------



## Garkam (14 Novembre 2020)

As-tu regardé dans les paramètres Réseau -> Bouton Avancée... la liste des réseaux, si tu as les 2,  box et partage iphone,  supprime celui de la box.

EDIT: tu peux également supprimer tout les services dans la partie gauche pour ne garder que Wi-fi actif


----------



## Garkam (14 Novembre 2020)

Garkam a dit:


> As-tu regardé dans les paramètres Réseau -> Bouton Avancée... la liste des réseaux, si tu as les 2,  box et partage iphone,  supprime celui de la box.
> 
> EDIT: tu peux également supprimer tout les services dans la partie gauche pour ne garder que Wi-fi actif


Re EDIT : j'ai trouvé cette commande :

```
networksetup -getinfo Wi-Fi | grep -q Subnet: || networksetup -setairportnetwork en1 "$ssid" "$password"
```
"$ssid" et "$password" a remplacer évidemment


----------



## Gregoryen (14 Novembre 2020)

Garkam a dit:


> As-tu regardé dans les paramètres Réseau -> Bouton Avancée... la liste des réseaux, si tu as les 2,  box et partage iphone,  supprime celui de la box.
> 
> EDIT: tu peux également supprimer tout les services dans la partie gauche pour ne garder que Wi-fi actif


Oui j'ai déjà fait cela mais ça m'enlève également la box quand je suis dans l'autre configuration.

J'ai essayé la commande, j'ai une erreur 

```
en1 is not a Wi-Fi interface.
** Error: Error obtaining wireless information.
```


----------



## Garkam (14 Novembre 2020)

et 
	
	



```
en0
```
 a la place de 
	
	



```
en1
```


----------



## Gregoryen (14 Novembre 2020)

Ah merci ! J'ai essayé en2 mais je n'ai pas pensé au en0

Je penses que c'est la bonne commande puisque le terminal cherche.
Il m'a répondu :

```
Could not find network  X de Gregoryen.
```
Alors que mon iPhone s'appelle " iPhone X de Gregoryen " et je l'ai bien marqué dans la commande. Je vais essayer pour ma box sinon je penses que c'est bon 

Quand j'essaie pour les ID de la box, il me sort " zsh: event not found: XXXXX "

XXXX étant un bout de mon mot de passe contenant des caractères spéciaux. Pourtant il est bien dans les parenthèses.


----------



## Garkam (14 Novembre 2020)

Étrange, chez moi ça fonctionne, tu es sur de bien nommer le nom du réseau ??
Surveille ton icône wifi pour contrôler si il tente une connexion au bon réseau...


----------



## Gregoryen (14 Novembre 2020)

Oui le nom et le wifi correspondent bien. Après je suis sur Big Sur, et j'ai remarqués plusieurs bugs du style copier coller. Mon clavier USB Apple n'est pas reconnu par macOS. Il plante quand j'écris parfois, et le copier coller fonctionne 1 fois avant de plus rien coller... 
Alors quand j'ai remplis mon ID et MDP j'ai bien fait attention de pas modifier les parenthèses etc car des fois il les remplace.

Même ta première commande je n'arrive pas a la faire fonctionner 


```
Defined sets include: (* == current set)
 * D5F4D48F-81C7-472E-90D8-548E80C2BE4A    (Automatique)
   2E1A33A7-4B8A-45A0-98DB-922E6C4AB9DF    (iPhone)
```

Il me sort : 

zsh: unknown file attribute:  
zsh: unknown username 'oma'
zsh: unknown file attribute: i


----------



## Garkam (14 Novembre 2020)

Alors tu as une couille mais qui n'a rien a voir avec les commandes   
*zsh: unknown username 'oma'  *ressemble étrangement à une partie de* Automatique*
et tout a l'heure :
*Could not find network  X de Gregoryen *alors que ton réseau est* iPhone X de Gregoryen*


----------



## Gregoryen (14 Novembre 2020)

J'ai essayé sur un macOS Catalina installé sur un SSD Externe, j'ai booté dessus mais la même chose ! J'ai même testé avec un autre clavier..


----------



## Garkam (14 Novembre 2020)

On va essayer autre chose, crée un fichier avec textedit avec comme texte la commande :

```
networksetup -getinfo Wi-Fi | grep -q Subnet: || networksetup -setairportnetwork en0 "$ssid" "$password"
```
 en remplacent le ssid et le password
Enregistre le sur ton bureau et fais un glisser / déposer dans ta fenêtre Ternimal


----------



## Gregoryen (14 Novembre 2020)

```
zsh: permission denied: /Users/gregoryen/Desktop/test.rtf
```
J'ai rajouté Administrateur et Everyone en Lecture et Ecriture dans les infos mais non.. Un chmod ? Le fichier texte peut-être lu ? Je pensais qu'il fallait faire un Shell ou un Batch.


----------



## Garkam (14 Novembre 2020)

Non pas besoin en théorie le chmod, c'est pour pour pouvoir l’exécuter directement en cliquant sur son icône
Modifie ton fichier :

```
sudo networksetup -getinfo Wi-Fi | grep -q Subnet: || networksetup -setairportnetwork en0 "FreeWifi"
```
ton mot de passe doit être saisi à l'aveugle.
EDIT : c'est mon test   après en0 c'est bien sur "tonRéseau" "TonCode" Pfff


----------



## Gregoryen (14 Novembre 2020)

HUG ?

Alors j'ai fait ta commande avec la Wifi de ma box. J'ai mis le MDP de mon ID du Mac et HOP magie il s'est connecté !

Mais j'ai une question, comment il à deviné le MDP ?? Je l'ai fait plusieurs fois en plus pour être sur, j'ai supprimé le Wifi de ma box dans WiFi avancés...

Par contre pour l'iPhone ça ne veux pas. On dirais que c'est un protocole différent. Pourtant la case Partager la connexion est coché, il n'est pas branché en USB, ni connecté a un réseau..

EDIT: Il me fait mentir j'ai retesté la commande avec l'iPhone et ça à marché.. Mais la question subsiste toujours, comment il à trouvé le MDP ?


----------



## Garkam (14 Novembre 2020)

Parce qu'il est enregistré dans ton trousseau, à chaque fois que tu changes de réseau il ne te le demande plus   
Par contre ça devrait marcher avec ton partage, moi ça marche... alors mon partage c'est avec un phone android mais je ne pense pas que ce soit un problème..


----------



## Gregoryen (14 Novembre 2020)

Je me disais bien qu'il y avait une raison rationnelle xD J'ai testé avec la box de la voisine mais ça n'a pas marché.

À la limite, la commande pour la WiFi, ce n'est pas grave, car si l'iPhone est pas à côté il ne le propose pas, par contre quand je suis connecté et que je le mets très loin il est toujours connecté..
C'est trop aléatoire pour avoir un truc bien. Donc pour la commande, elle marche mais on ne sait pas quand elle ne marchera pas xD
Cela ne me dérange pas de changer la WiFi manuellement, j'aime bien le faire d'autant plus que sur Big Sur les menus sont jolis.
C'est juste un clic et je choisis c'est plutôt rapide par rapport au changement de priorité qui nécessite plusieurs clics rébarbatifs.

Cependant j'aimerais bien que la commande que tu m’as proposé au début pour changer la configuration entre Automatic et Maison marche mais j'ai une erreur.


----------



## Garkam (14 Novembre 2020)

Alors ça devrait marcher refais l'essai dans un fichier Textedit , je pense pense que tu as une couille voir deux   avec Terminal, perso je travaille avec iTerm qui m'apporte plus d'options


----------



## Gregoryen (14 Novembre 2020)

BON !!!
Ça marche... Je suis juste débile, car quand tu ma expliqué la commande scselect je n'avais pas bien compris. Je me demandais pourquoi je devais copier tout ces numéros... BREF j'ai mis SCSELECT dans le terminal pour m'assurer d'avoir les deux configs, ensuite j'ai fait SCSELECT IPHONE et magie tout marche...

Ralalalala... ‍️ Bon ben je te remercie beaucoup pour ton aide et ta détermination, le sujet est résolu avec succès !

Bonne soirée à toi !


----------



## Membre supprimé 1129907 (14 Novembre 2020)

La commande

```
networksetup -getinfo Wi-Fi | grep Subnet:
```
ne retourne rien chez moi (pas de ligne Subnet


```
networksetup -getinfo Wi-Fi | grep Subnet
```
Retourne par contre le "Subnet mask"

Ce ne serait donc pas plutôt ceci ?

```
networksetup -getinfo Wi-Fi | grep -q Subnet
```


----------



## Garkam (14 Novembre 2020)

Non lance la commande complète :

```
networksetup -getinfo Wi-Fi | grep -q Subnet: || networksetup -setairportnetwork en1 "$ssid" "$password"
```


----------



## Garkam (14 Novembre 2020)

Gregoryen a dit:


> BON !!!
> Ça marche... Je suis juste débile, car quand tu ma expliqué la commande scselect je n'avais pas bien compris. Je me demandais pourquoi je devais copier tout ces numéros... BREF j'ai mis SCSELECT dans le terminal pour m'assurer d'avoir les deux configs, ensuite j'ai fait SCSELECT IPHONE et magie tout marche...
> 
> Ralalalala... ‍️ Bon ben je te remercie beaucoup pour ton aide et ta détermination, le sujet est résolu avec succès !
> ...


Bon le principale c'est qu'avec tout ça , tu vas pouvoir te faire un script qui cartonne


----------



## Gregoryen (14 Novembre 2020)

Garkam a dit:


> Bon le principale c'est qu'avec tout ça , tu vas pouvoir te faire un script qui cartonne


Oui je vais faire ça avec automator ^^ Je vais même faire en sorte d'avoir une seule app et qu'il me pose la question "Quelle connexion veux-tu ? " et choisir iPhone ou Maison ^^

Encore merci vous deux !


----------



## Garkam (14 Novembre 2020)

Partage le , une fois que tu l'auras écrit


----------



## Gregoryen (14 Novembre 2020)

Yep, la je fais une pause et je le ferais dans la nuit ;-)


----------



## Gregoryen (15 Novembre 2020)

Bon je pensais que ça serais plus facile mais je n'y arrive pas je vais mettre trop de temps.
J'ai réussi à afficher une liste avec AppleScript, mais j'aurais préféré de gros boutons plus gros et plus agréable pour les yeux.
Seulement je ne sais pas comment lui faire des conditions pour lui dire que si le choix 1 alors exécute Scselect iPhone sinon annuler.
Et une autre, si tu fais choix 2 alors Automatique sinon annuler.


----------



## Garkam (15 Novembre 2020)

Gregoryen a dit:


> Par contre pour l'iPhone ça ne veux pas. On dirais que c'est un protocole différent.


Tu as sûrement raison de mémoire avec mon ancien iPhone,  j'avais j'avais un logo comme celui-ci 
	

		
			
		

		
	




alors qu'avec mon Android j'ai celui là 
	

		
			
		

		
	




voilà un script qui permute tes configurations avec AppleScript :


```
tell current application
    
    set wifi_maison to "FreeBox_Bruno" # A modifier par le ssid de ta box
    set config_maison to "Automatic" # Nom Configuration Maison
    set config_iphone to "Iphone" # Nom Configuration Iphone
    set device_wifi to do shell script "networksetup -listallhardwareports | awk '/Wi-Fi/{getline; print $2}'"
    set mon_SSID to do shell script "networksetup -getairportnetwork " & device_wifi
    
    if mon_SSID contains wifi_maison then
        do shell script "scselect " & config_iphone
    else
        do shell script "scselect " & config_maison
    end if
    
end tell
```

EDIT: j'ai modifié le script de manière à définir automatique le n° de device (en0, en1, en2 etc...) en fonction de la config


----------



## Gregoryen (15 Novembre 2020)

Sur mon iPhone j'ai bien les deux chaines reliés. Pour Android je ne sais pas je n'en ai pas, je vais essayer avec Blue Stack mais je ne pense pas que je puisse le faire vu que c'est une machine virtuelle.

 Alors, bonne nouvelle, j'ai mis le script dans Apple Script dans automator et il m'affiche un processus terminé, j'ai le son de réussite.

La mauvaise nouvelle c'est qu'il ne s'est rien passé, pas de fenêtre ni de changement de config.

J'ai essayé de rajouter ça pour la fenêtre :


```
display dialog "Type de connexion" buttons {"iPhone", "Automatic"} default button 2
```


----------



## Garkam (15 Novembre 2020)

Si tu l’exécutes dans Éditeur de script que t'affiche t'il comme résultat ??


----------



## Gregoryen (15 Novembre 2020)




----------



## Garkam (15 Novembre 2020)

Donc si tu actives sur ton partage de connexion et que tu exécutes le script tu devrais basculer sur ta configuration "Automatic"

EDIT: J'ai mis à charger mon vieux iPhone pour trouver une solution car le mieux serait de pouvoir permuter la connexion avec la commande 

```
networksetup -getinfo Wi-Fi | grep -q Subnet: || networksetup -setairportnetwork en1 "$ssid" "$password"
```

Je regarde ça cet aprèm


----------



## Gregoryen (15 Novembre 2020)

Garkam a dit:


> Donc si tu actives sur ton partage de connexion et que tu exécutes le script tu devrais basculer sur ta configuration "Automatic"
> 
> EDIT: J'ai mis à charger mon vieux iPhone pour trouver une solution car le mieux serait de pouvoir permuter la connexion avec la commande
> 
> ...


En fait, pour la WI-Fi je préfère le sélectionner manuellement. Ce que je cherche à faire c'est de faire une app Automator qui, lorsqu'on clique cela me propose deux boutons, maison ou iPhone.
En plus ça évite de laisser le mot de passe en clair dans un script.
J'ai trouvé un site qui explique mais j'ai du mal. Je vais essayer quand même.


----------



## Garkam (15 Novembre 2020)

Ok essaie ça :


```
tell current application

    set config_list to {"Automatic", "Iphone"}
    set choix to choose from list config_list
    say choix
      
    if choix contains "Automatic" then
        do shell script "scselect Automatic"
    else
        do shell script "scselect Iphone"
    end if
  
end tell
```

Si c'est "Maison" remplace "Automatic"


----------



## Gregoryen (15 Novembre 2020)

Merci ça fonctionne 
Je suis chiant mais y'a moyen d'avoir deux boutons plutôt qu'une liste ? Avec un bouton Annuler pour s'échapper en cas ^^
Je sais qu'il ya ce fameux *Display Dialog* mais je ne sait pas comment l'intégrer dans las syntaxe.
PS: Quand je clique sur un bouton j'ai Voice Over qui me cite lis le bouton, c'est normal ?

EDIT: J'ai trouvé d'ou proviens la voix, dans SAY c'est ça ? Je vais la laisser j'aime bien.


----------



## Garkam (15 Novembre 2020)

Voilà (j'ai laissé la commande "say"  )


```
tell current application
 
    set choix to button returned of (display dialog "Sélectionnez votre configuration." buttons {"Automatic", "Iphone"})
    say choix
 
    if choix = "Automatic" then
        do shell script "scselect Automatic"
    else
        do shell script "scselect Iphone"
    end if
 
end tell
```


----------



## Gregoryen (16 Novembre 2020)

Merci beaucoup !! Je sujet est résolu je penses bien ^^
Je vais pouvoir garder ce script comme base pour d'autres truc en cas ! Bonne nuit !


----------

