10 votos

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

He escrito una aplicación Automator con el siguiente shell script 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 sudo necesita una contraseña. Cuando el mismo comando se ejecuta en Terminal, me pide una contraseña, pero cuando se ejecuta como una aplicación de Automator, no me pide ninguna entrada. ¿Hay alguna forma de pasar la contraseña a este sudo de forma programada dentro del script de Automator? Sé que esto no es una práctica segura, pero todavía quiero hacerlo ya que mi sistema es razonablemente seguro y no es tocado por nadie más que yo.

Un método "do shell script...con privilegios de administrador" está dando el siguiente error:

enter image description here

12voto

siva Puntos 23

AppleScript debería permitirle hacer esto utilizando 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, sino que la pide con un prompt estándar de OS X:

Puede utilizarlo en su flujo de trabajo de Automator de una de las dos maneras siguientes:

2voto

Steve Evans Puntos 155

Esperar

En su lugar, puede utilizar una herramienta como esperar a script la interacción con sudo . expect está diseñado para esta situación.

esperar - diálogo programado con programas interactivos

El siguiente shell script 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 utilizar la función de AppleScript do shell script de mando. El comando ofrece una con privilegios de administrador opción. La opción de Apple Nota técnica 2065 cubre do shell script en detalle.

eco

Otros enfoques comunes a este problema implican el uso de echo para pasar la contraseña a sudo con un tubo. Esta respuesta de StackOverflow analiza este y otros enfoques relacionados, ¿Cómo proporcionar una contraseña a un comando que pide una en bash?

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X