Pasar una contraseña a una aplicación Automator

9

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:

ingrese la descripción de la imagen aquí

TheLearner
fuente

Respuestas:

10

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 la solicita con un mensaje estándar de OS X:

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

grg
fuente
1
@Amit osascript es para bash :) Si desea AppleScript puro en la acción AppleScript Automator, elimine el osascript de esta manera: do shell script "sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist" with administrator privileges( Realice una de las siguientes
acciones
1
Sí, esto funcionó a las mil maravillas! Gracias por tu paciencia ... ¡tonta!
TheLearner
2

esperar

En su lugar, podría usar una herramienta como esperar con la secuencia de comandos de la interacción sudo. expectestá diseñado para esta situación.

esperar - 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 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 echopara pasar la contraseña a sudouna 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?

Graham Miln
fuente