J'ai écrit une application Automator avec le script shell suivante 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 la commande sudo a besoin d'un mot de passe. Lorsque la même commande est exécutée sur Terminal, elle me demande un mot de passe, mais lorsqu'elle est exécutée en tant qu'application Automator, ne me demande aucune entrée. Y at - il de toute façon de passer le mot de passe par programme à ce sudo dans le script Automator? Je sais que ce n'est pas une pratique sûre, mais je veux toujours le faire car mon système est raisonnablement sécurisé et intact par quelqu'un d'autre que moi.
Une méthode « faire script shell ... avec des privilèges d'administrateur » donne l'erreur suivante:
la source
do shell script "sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist" with administrator privileges
( Effectuez l'une des actions suivantes sur cette image )attendre
Vous pouvez utiliser à la place un outil comme s'attendre à écrire l'interaction avec
sudo
.expect
est conçu pour cette situation.Le script shell suivant peut être suffisant pour vos deux commandes:
AppleScript et avec des privilèges d'administrateur
Une autre approche consiste à utiliser la commande de script do shell d' AppleScript . La commande offre un avec des privilèges d'administrateur option. Les notes techniques d'Apple 2065 couvrent le script shell en détail.
écho
D'autres approches courantes à ce problème impliquent d'utiliser
echo
pour passer le mot de passe àsudo
un canal. Cette réponse StackOverflow discute cela et d' autres approches connexes, Comment fournir un mot de passe à une commande qui invites pour un en bash?la source