Pasando una contraseña a una aplicación de Automator

8

He escrito una aplicación de 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 espera, excepto que el comando sudo necesita una contraseña. Cuando se ejecuta el mismo comando en la Terminal, me pide una contraseña, pero cuando se ejecuta como una aplicación de Automator, no me solicita ninguna entrada. ¿Hay alguna forma de pasar la contraseña a este sudo dentro de la secuencia de comandos Automator mediante programación? Sé que esto no es una práctica segura, pero aún así quiero hacerlo ya que mi sistema está razonablemente seguro y no ha sido tocado por nadie más que yo.

El método "haz shell shell ... con privilegios de administrador" da el siguiente error:

    
pregunta TheLearner 10.05.2014 - 20:10

2 respuestas

7

AppleScript debería permitirte hacer esto usando with administrator privileges :

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

Esto no pasa la contraseña, pero lo solicita con un indicador estándar de OS X:

Puede usar esto en su flujo de trabajo de Automator de una de las dos formas siguientes:

    
respondido por el grg 10.05.2014 - 20:31
2

esperar

En su lugar, podría usar una herramienta como expectativa para escribir la interacción con sudo . expect está diseñado para esta situación.

  

expect - diálogo programado con programas interactivos

El siguiente script de shell puede ser suficiente para sus dos comandos:

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

AppleScript y con privilegios de administrador

Un enfoque alternativo es usar el comando do shell script de AppleScript. El comando ofrece una opción con privilegios de administrador . La Nota técnica 2065 de Apple cubre el script de shell en detalle.

eco

Otros enfoques comunes a este problema involucran el uso de echo para pasar la contraseña a sudo con una canalización. Esta respuesta de StackOverflow trata este y otros enfoques relacionados, ¿Cómo proporcionar una contraseña a un comando que solicita uno en bash?

    
respondido por el Graham Miln 10.05.2014 - 20:31

Lea otras preguntas en las etiquetas