J'utilise Catalina, et le système d'exploitation active toujours le wifi au démarrage. J'ai cherché des méthodes pour désactiver le wifi à la connexion et j'ai créé un fichier .plist :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.username.wifi_off</string>
<key>ProgramArguments</key>
<array>
<string>/Users/username/.wifi_off.sh</string>
</array>
<key>Nice</key>
<integer>1</integer>
<key>RunAtLoad</key>
<true/>
<key>StandardErrorPath</key>
<string>/tmp/wifi_off.err</string>
<key>StandardOutPath</key>
<string>/tmp/wifi_off.out</string>
</dict>
</plist>
qui est placé dans ~/Library/LaunchAgents
et le fichier .wifi_off.sh
est :
#!/bin/sh
networksetup -setairportpower en0 off
Est-ce le moyen le plus rapide et/ou le plus efficace de désactiver le wifi à la connexion ? Comment peut-on étendre cela pour désactiver le wifi au démarrage, de sorte que le wifi soit déconnecté à l'écran de connexion, avant que quiconque ne se soit connecté ?
0 votes
Je suppose que vous voulez le désactiver au démarrage/à l'ouverture de session, mais que vous voulez quand même vous souvenir des réseaux auxquels vous connecter ultérieurement, correct ? Si c'est le cas, ne le lancez pas en tant qu'agent de lancement, mais en tant que démon de lancement. apple.stackexchange.com/questions/249446/
1 votes
Essayez également d'utiliser un crochet de déconnexion pour désactiver le WiFi lorsque l'utilisateur s'éteint. L'alimentation du WiFi est persistante lors des redémarrages (le WiFi de mon iMac est désactivé par défaut et reste ainsi lors des redémarrages).
0 votes
Oui, je pensais que le crochet de déconnexion serait aussi une bonne idée. Mais pour le premier, je peux juste déplacer mon .plist à
/LaunchDaemons
etsudo launchctl load
c'est bien ça ? Est-ce que je doislaunchctl unload
du tout le précédent ?1 votes
Si vous le mettez dans /Library/LaunchDaemons/ et que vous vous assurez qu'il appartient à Root, alors vous n'avez pas besoin de
sudo
du tout. Et vous n'avez pas besoin d'un shell script séparé. Vous pouvez simplement mettre/usr/sbin/networksetup -setairportpower en0 off
dans votre plist en tant queProgramArguments
1 votes
Si vous apportez des modifications au plist, alors oui, vous devez le décharger.
0 votes
Je suis également tombé sur ceci... vous devrez peut-être écrire une application C++ pour que cela fonctionne : developer.apple.com/library/archive/documentation/Darwin/
0 votes
J'en ai trouvé un de plus dans mes déplacements aujourd'hui. Cette application vous permet de lancer des scripts lors de certains événements : apps.apple.com/us/app/eventscripts/id525319418?mt=12 Je ne l'ai pas essayé, mais ils offrent un version démo C'est peut-être ce que vous recherchez et, à 4 dollars américains, c'est un bon prix.
0 votes
@Allan. Intéressant. Il semble donc qu'il y ait plus d'une façon de déclencher des événements/scripts/whathaveyou. Mais je suppose que cela pose maintenant la question suivante : lequel de ces événements se produit en premier ? Il pourrait être intéressant de les tester tous en tandem, et d'une manière ou d'une autre de sortir le moment exact où chacun est exécuté dans un fichier journal. Je peux voir comment cela serait facile à intégrer dans le crontab scripts, mais le crontab lui-même pourrait-il également sortir l'heure à laquelle il est exécuté dans un fichier journal ? Potentiellement lié : comment tout cela s'afficherait-il lors du démarrage en mode verbeux ?
0 votes
@TJ Luoma. Je viens juste de réaliser exactement comment votre solution fonctionne. La mienne était inutilement surcompliquée par une étape, le shell séparé script. J'ai lu à certains endroits que crontab a été "déprécié" depuis 10.4, et que launchd devrait être utilisé pour ce type de situations. Avez-vous des idées sur l'un ou l'autre ?
1 votes
Je sais que certaines personnes aiment la simplicité de crontab, mais launchd est la voie à suivre. Vous avez raison de dire que vous n'avez pas besoin d'un script distinct pour cela. Si vous trouvez que cela ne fonctionne pas, il pourrait être nécessaire de le placer dans LaunchDaemons à la place (qui s'exécute en tant que Root).
0 votes
@TJ Luoma. J'ai ajouté le code
date >> /Users/username/Desktop/launchd_datestamp.txt
aucrontab
etlogouthook
et ils fonctionnent de manière fiable, mais je ne parviens pas à obtenir l'accès à l'Internet.LaunchDaemon
pour écrire un fichier n'importe où sur le disque. Peut-être que le fichier est correctement écrit mais qu'il n'est pas persistant ? J'ai essayé/tmp
/Users/username/...
et ailleurs. Des suggestions ?0 votes
Les LaunchDaemons doivent être stockés dans
/Library/LaunchDaemons/
et doivent être détenus parroot:wheel
(sudo chown Root:wheel /Library/LaunchDaemons/com.your.launchdfile.here.plist) Si c'est déjà configuré, je ne sais pas pourquoi cela ne fonctionne pas, essayez d'ajouter StandardErrorPath et StandardOutPath à la liste.0 votes
Mon attention a été attirée sur cette question-réponse parce que quelqu'un a voté en faveur de ma réponse plus tôt dans la journée. Je vois que vous avez maintenant votre propre réponse, et c'est très bien ainsi. Je note également que vous avez beaucoup changé votre question. Vous êtes passé par plusieurs itérations de votre
ultimate goal
et a ensuite décidé de supprimer leultimate goal
de votre question entièrement. Pensez-vous que c'est utile ? Je ne dis pas que c'est inutile, je suis juste curieux. De mon point de vue, c'est une cible mouvante.0 votes
@Seamus : Je suppose que le "but ultime" a changé une fois que j'ai réalisé ce que j'essayais vraiment de faire, à savoir prévenir tout connexion wifi, que ce soit à un réseau connu ou non.
0 votes
C'est normal - Apple fait des choses mystérieuses de manière mystérieuse. Mais certains peuvent se demander si cela n'appelle pas une autre question. Vous n'êtes pas soumis à un quota.