Passaggio di una password a un'applicazione di Automator

8

Ho scritto un'applicazione di Automator con il seguente script di shell per aprire una connessione FTP sul mio sistema:

sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist
osascript -e 'tell app "Finder" to display alert "SFTP Opened"'

Funziona esattamente come previsto, tranne per il fatto che il comando sudo richiede una password. Quando lo stesso comando viene eseguito su Terminale, mi viene richiesta una password, ma quando viene eseguita come un'app Automator, non mi richiede alcun input. È comunque necessario passare la password a questo sudo al livello di programmazione all'interno dello script di Automator? So che questa non è una pratica sicura, ma voglio ancora farlo perché il mio sistema è ragionevolmente sicuro e non toccato da nessuno al di fuori di me.

Un metodo "fai shell script ... con privilegi di amministratore" sta dando il seguente errore:

    
posta TheLearner 10.05.2014 - 20:10
fonte

2 risposte

7

AppleScript dovrebbe consentire di farlo utilizzando with administrator privileges :

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

Questo non passa la password, ma lo richiede con un prompt OS X standard:

Puoi usarlo nel tuo flusso di lavoro di Automator in uno dei due seguenti modi:

    
risposta data 10.05.2014 - 20:31
fonte
2

Potresti invece utilizzare uno strumento come aspettare per scenentare l'interazione con sudo . expect è progettato per questa situazione.

expect - programmed dialogue with interactive programs

Il seguente script di shell potrebbe essere sufficiente per i tuoi due comandi:

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

AppleScript e con privilegi di amministratore

Un approccio alternativo è utilizzare il comando fai script di shell di AppleScript. Il comando offre un'opzione con privilegi di amministratore . La nota tecnica 2065 di Apple copre in dettaglio lo script della shell.

echo

Altri approcci comuni a questo problema riguardano l'utilizzo di echo per passare la password a sudo con una pipe. Questa risposta StackOverflow discute questo e altri approcci correlati, Come fornire la password a un comando che ne richiede uno in bash?

    
risposta data 10.05.2014 - 20:31
fonte

Leggi altre domande sui tag