Initialement demandé sur Stack Overflow, mais cela pourrait mieux convenir ici. Peu importe où il est répondu en premier, je veillerai à mettre à jour la question correspondante avec la même réponse.
J'ai déjà vérifié cette question similaire.
OS MacOS 10.15.17 (Catalina)
Je veux créer un script qui utilise iperf pour lancer un client qui mesure la vitesse de ma connexion toutes les quelques secondes pendant une période prolongée. J'ai créé un fichier daemon et l'ai placé dans ~/Library/LaunchAgents/com.myself.iperfclient.plist
.
com.myself.iperfclient.plist
Label
com.myself.iperfclient
ProgramArguments
/Users/myself/Documents/bin/iperf/netspeed
StartInterval
20
Disabled
netspeed
#!/bin/bash
# voir https://stackoverflow.com/a/246128/10200417
script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
nom_script=`basename $0`
# echo "script appelé $nom_script depuis $script_dir"
serveur_iperf=127.0.0.1
port_iperf=54321
# lancer le client iperf, enregistrer les résultats dans ./logs/client.log
iperf \
-c $serveur_iperf \
-p $port_iperf \
--logfile $script_dir/logs/client.log
Le fichier netspeed
est exécutable pour tout le monde :
$ ls -l netspeed
-rwxr-xr-x@ 1 myself staff 379 Jan 11 21:36 netspeed
Lorsque j'essaie d'ajouter le nouveau daemon, avec launchctl load ~/Library/LaunchAgents/com.myself.iperfclient.plist
, voici le message d'erreur que je reçois dans la Console :
Sandbox: bash(50654) System Policy: deny(1) file-read-data /Users/myself/Documents/bin/iperf/netspeed
Si dans le descripteur .plist
du daemon j'ajoute open
comme premier élément dans ProgramArguments
, il n'y a pas d'erreur. Cependant, je ne veux pas exécuter le script de cette manière car cela lance une nouvelle fenêtre Terminal à chaque fois, ce qui est extrêmement ennuyeux.
Ma question
Comment puis-je permettre à mon processus daemon d'exécuter netspeed
?
P.S.
Le code de statut de launchctl est 126.
$ launchctl list | grep myself
- 126 com.myself.iperfclient