12 votes

Transmettre un mot de passe à une application Automator

J'ai écrit une application Automator avec le shell script suivant pour ouvrir une connexion FTP sur mon système :

sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist
osascript -e 'tell app "Finder" to display alert "SFTP Opened"'

Cela fonctionne exactement comme prévu, sauf que le sudo a besoin d'un mot de passe. Lorsque la même commande est exécutée sur un terminal, elle me demande un mot de passe, mais lorsqu'elle est exécutée en tant qu'application Automator, elle ne me demande aucune entrée. Existe-t-il un moyen de transmettre par programme le mot de passe à ce sudo dans le script d'Automator ? Je sais que ce n'est pas une pratique sûre, mais je veux quand même le faire car mon système est raisonnablement sécurisé et n'est touché par personne d'autre que moi.

Une méthode "do shell script...avec des privilèges d'administrateur" donne l'erreur suivante :

enter image description here

12voto

grg Points 181593

AppleScript devrait vous permettre de le faire en utilisant with administrator privileges :

osascript -e 'do shell script "sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist" with administrator privileges'

Cette méthode ne transmet pas le mot de passe, mais le demande avec une invite OS X standard :

Vous pouvez l'utiliser dans votre flux de travail Automator de l'une des deux manières suivantes :

3voto

Graham Miln Points 39606

S'attendre à

Vous pourriez plutôt utiliser un outil comme s'attendre à pour script l'interaction avec sudo . expect est conçu pour cette situation.

attendre - dialogue programmé avec des programmes interactifs

Le shell script suivant peut suffire pour vos deux commandes :

#!/usr/bin/expect -f
spawn sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist
send "my-secret-password\n"

AppleScript et avec des privilèges d'administrateur

Une autre approche consiste à utiliser la fonction AppleScript do shell script commande. La commande offre un avec des privilèges d'administrateur option. Apple Note technique 2065 couvre le shell script en détail.

echo

D'autres approches courantes de ce problème consistent à utiliser echo pour passer le mot de passe à sudo avec un tuyau. Cette réponse de StackOverflow traite de cette approche et d'autres approches connexes, Comment fournir un mot de passe à une commande qui en demande un en bash ?

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X