# Automatiser une action dans le Terminal



## Jean82500 (13 Novembre 2021)

Bonjour,
je viens de fouiller un peu sur Automator ou Raccourcis et ne trouve pas la solution. Voici le problème :

j'utilisais une petite app nommée DNSFlusher pour vider les caches DNS. Bien pratique et rapide. Mais elle semble ne plus exister sur Monterey.
j'ai trouvé la commande Terminal qui effectue cette action (sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder)
-Je souhaiterais avoir un "bouton" qui me permette d'exécuter ça en un clic.
Est-ce possible ? Quelqu'un a-t-il une idée ?
Merci d'avance


----------



## zeltron54 (13 Novembre 2021)

Bonjour,

Dans automator, créer   nouveau --> application
1 seule action, dans les utilitaires(barre de gauche) choisi l'action -->Exécuter un script shell --> dans la fenêtre mettre ta commande
Si tu veux éviter d'avoir à entrer ton mot de passe lorsque tu vas exécuter cette appli tu entres echo "mot de passe" avant ta commande...
ce qui donne :

echo "ton_mot_de_passe_de_session" | sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
En remplaçant "ton_mot_de_passe_de_session) par le tien !

Après enregistrement tu auras une appli que tu pourras lancer d'un double clic , ou la glisser dans le dock pour la lancer d'un simple clic comme n'importe quelle autre appli.

Cette appli aurait aussi pu être crée comme service afin de la trouver dans service lors d'un clic droit...


----------



## baron (13 Novembre 2021)

Tu crées un processus Automator ou Raccourcis et tu mets dedans l'action Exécuter un script shell.
• https://support.apple.com/fr-ca/guide/automator/autbbd4cc11c/mac

Eventuellement, regarde aussi ici :
• https://forums.macg.co/threads/cree...une-commande-simple-dans-le-terminal.1336437/

[Grillé…  ]


----------



## Jean82500 (14 Novembre 2021)

zeltron54 a dit:


> Bonjour,
> 
> Dans automator, créer   nouveau --> application
> 1 seule action, dans les utilitaires(barre de gauche) choisi l'action -->Exécuter un script shell --> dans la fenêtre mettre ta commande
> ...


Merci, c'est très clair . Je vais essayer ça et te tiens au courant.


----------



## Jean82500 (14 Novembre 2021)

Bon, je viens d'essayer et voici deux captures d'écran pour te montrer mon problème
1 fenêtre de Automator pour la saisie de commande
2 réponse suite  à l'exécution


----------



## zeltron54 (14 Novembre 2021)

Il te prévient que la commande sudo exige un mot de passe ...

Essai de faire un copié collé de ta commande directement dans le terminal pour voir si elle est correcte ! si elle passe sans erreur...


----------



## zeltron54 (14 Novembre 2021)

Tu n'aurais pas oublié un espace ?
il me semble que la syntaxe de la commande est dscacheutil -flushcache ... avec un espace avant le -
vérifie bien ta ligne de commande  !...


----------



## Jean82500 (14 Novembre 2021)

zeltron54 a dit:


> Tu n'aurais pas oublié un espace ?
> il me semble que la syntaxe de la commande est dscacheutil -flushcache ... avec un espace avant le -
> vérifie bien ta ligne de commande  !...


J'avais oublié l'espace effectivement. Mais la commande s'exécute normalement quand je la fais depuis le Terminal. Il me semble après cette correction que cela semble être un problème avec le mot de passe...


----------



## zeltron54 (15 Novembre 2021)

supprime le deuxième sudo pour vérifier !

echo "ton_mot_de_passe_de_session" | sudo dscacheutil -flushcache ; killall -HUP mDNSResponder

ou peut être:

echo "ton_mot_de_passe_de_session" | sudo dscacheutil -flushcache ; echo "ton_mot_de_passe_de_session" | sudo killall -HUP mDNSResponder

Pour retransmettre le mot de passe au deuxième sudo.


----------



## Jean82500 (15 Novembre 2021)

zeltron54 a dit:


> supprime le deuxième sudo pour vérifier !
> 
> echo "ton_mot_de_passe_de_session" | sudo dscacheutil -flushcache ; killall -HUP mDNSResponder
> 
> ...


Je viens de tester et la réponse est toujours la même dans les deux cas. Les guillemets entourant le mot de passe sont-ils requis ?
Tu peux tester ma commande dans le Terminal. Elle s'exécute bien. Mais le mot de passe est requis une fois qu'elle est exécutée...


----------



## daffyb (15 Novembre 2021)

Jean82500 a dit:


> Les guillemets entourant le mot de passe sont-ils requis ?


oui en espérant qu'il n'y ait pas de guillemets dans ton mot de passe


----------



## Jean82500 (15 Novembre 2021)

Bon alors je confirme.
Mais ce message m'intrigue : "sudo: a terminal is required to read the password..." Je ne connais pas la syntaxe de la commande echo mais ne manque-t-il pas un argument ? Car c'est ce qui semble bloquer en l'occurrence


----------



## zeltron54 (15 Novembre 2021)

La bonne commande est:

echo " & "Mot-de-passe" & " | sudo -S dscacheutil -flushcache; echo jcp | sudo -S killall -HUP mDNSResponder

remplace juste (Mot-de-passe) par le tien en laissant les guillemets. j' avais juste oublié l'option (-S) , j'avais fait un copié collé de ta commande ! LOL


----------



## Jean82500 (15 Novembre 2021)

Voilà la ligne de commande exacte que je passe dans Automator (copier/coller de ma commande) :
echo " & "xxxxxx" & " | sudo -S dscacheutil -flushcache; echo jcp | sudo -S killall -HUP mDNSResponder
où "xxxxxx" est mon mot de passe et (capture ci-dessous) la réponse...
Désespérant !


----------



## zeltron54 (15 Novembre 2021)

décidément les lundis sont dur pour moi !
les copiés collés ne me réussissent pas , j'avais mis mes tests en applescript...

echo "XXXX" | sudo -S dscacheutil -flushcache; echo "jXXXX" | sudo -S killall -HUP mDNSResponder

le mot de passe à mettre 2 fois

Dis moi si là c'est "ENFIN" bon !


----------



## Jean82500 (15 Novembre 2021)

Je n'ai plus de message d'erreur !
Dernier doute à lever : suis-je sur que mon cache DNS est bien vidé ???
Sinon, bravo et merci pour ta patience


----------



## zeltron54 (15 Novembre 2021)

si tout passe sans message c'est que la commande à bien été exécutée !...

ENFIN !  

content pour toi


----------

