He escrito una aplicación Automator con el siguiente script de shell para abrir una conexión FTP en mi sistema:
sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist
osascript -e 'tell app "Finder" to display alert "SFTP Opened"'
Esto funciona exactamente como se esperaba, excepto que el comando sudo necesita una contraseña. Cuando se ejecuta el mismo comando en la Terminal, me solicita una contraseña, pero cuando se ejecuta como una aplicación Automator, no me solicita ninguna entrada. ¿Hay alguna forma de pasar programáticamente la contraseña a este sudo dentro del script de Automator? Sé que esta no es una práctica segura, pero todavía quiero hacerlo, ya que mi sistema es razonablemente seguro y no ha sido tocado por nadie más que yo.
Un método "hacer script de shell ... con privilegios de administrador" está dando el siguiente error:
fuente
do shell script "sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist" with administrator privileges
( Realice una de las siguientesesperar
En su lugar, podría usar una herramienta como esperar con la secuencia de comandos de la interacción
sudo
.expect
está diseñado para esta situación.El siguiente script de shell puede ser suficiente para sus dos comandos:
AppleScript y con privilegios de administrador
Un enfoque alternativo es utilizar el comando do shell script de AppleScript . El comando ofrece una opción con privilegios de administrador . Las notas técnicas de Apple 2065 cubren el script de shell en detalle.
eco
Otros enfoques comunes para este problema implican usar
echo
para pasar la contraseña asudo
una tubería. Esta respuesta de StackOverflow analiza este y otros enfoques relacionados. ¿Cómo proporcionar una contraseña a un comando que solicita una en bash?fuente