IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Automator/Applescript: il execute le resultat de ma commande shell, au lieu de la stocker dans une variable
Options
djdoxy
posté 23 Oct 2019, 10:43
Message #1


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 972
Inscrit : 17 Apr 2002
Lieu : Entre Nîmes et Montpellier
Membre no 2 280



Bonjour

Voilà le probleme que cherche à resoudre :
Avant de lancer une application, je veux verifier que les preferences de sécurité autorisent les applications de "tout le monde" et pas juste "l'appstore et developeur identifiés"
Si c'est pas le cas, je veux changer ca avant de lancer mon appli.

Je suis parti dans l'idée de faire un script automator, pour à la fin avoir une "application" facile à lancer (et avec une belle icone toussa)

Donc ce que je veux faire c'est ca:
Lancer la commande "spctl --status"
Si le resultat contient "enabled" alors lancer la commande "sudo cpctl --master-disable"
Lancer mon application

Comme je veux que la commande sudo prompte l'utilisateur pour son password (et pas ouvre une fenetre bash) j'ai choisi d'utiliser un script Apple Script. (il y a peut etre mieux, tous les conseils sont les bienvenus)

J'ai donc le script suivant:
set x to do shell script "spctl --status"
if (x contains "enabled") then
do shell script "sudo spctl --master-disable" with administrator privilieges
end if
do shell script "lance mon appli" (je vous epagne la ligne de commande complete)

Sauf que ca marche tres bien quand le status retourne "assesements enabled" : il me prompte pour mon password, et fait le sudo tout marche smile.gif
Mais quand je lance une seconde fois, et que cette fois le status renvoie "assesement disabled" le comportement n'est pas du tout le meme.
Il ne passe meme pas dans mon if, et me prompte une erreur

L'action "run applescript" a rencontré une erreur: "assesements disabled" (mon mac est an anglais, j'ai traduit, c'est peut etre pas exactement la meme chose avec un mac FR)

Ca donne l'impression qu'il cherche a executer le resultat de ma variable au lieu de la stocker dans x
Mais je ne comprend pas pourquoi ca fait pas la meme chose que le resutat de la commande status est "assesements enabled"


Si une expert peut eclairer ma lanterne...

Ce message a été modifié par djdoxy - 23 Oct 2019, 10:47.


--------------------
Heureux switcher depuis le 18/02/2005 mais désormais apostat
iMac 27" Late 2015
Hackintosh Core i5 3.4Ghz sur P8Z77-V avec une RX580 sous Mac OS X Mojave
Go to the top of the page
 
+Quote Post
PBell
posté 25 Oct 2019, 06:37
Message #2


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 264
Inscrit : 7 Dec 2013
Lieu : Ile de France
Membre no 188 169



Bonjour,
la dernière partie du man spctl sur le Terminal indique que la commande peut répondre avec un 0 si pas d'erreur ou une erreur (1, 2, ou 3).
Je pense que dans ton cas, c'est bien une erreur.

QUOTE
DIAGNOSTICS
spctl exits zero on success, or one if an operation has failed. Exit
code two indicates unrecognized or unsuitable arguments. If an assess-
ment operation results in denial but no other problem has occurred, the
exit code is three.


Je te suggère de mettre ton "do shell script" pour le status dans un block try/end try, sachant que si tu as une erreur, il faudrait peut être l'analyser.
Sans être certain, je pense que lorsque c'est "disable", c'est sans doute ce qui génère l'erreur;

Cordialement


--------------------
iiMac 24 M1 16Go/1To 13.5.1
iMac 27 i5 3,1GHz 8Go/1To 10.11.6 / 10.6.8
iMac 20 C.Duo 2,6Ghz 8Go/350Go 10.6.8 / 10.11
Mini C.Duo 2,0Ghz 2Go/500Go 10.6.8
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 28th March 2024 - 10:05