Passare una password a un'applicazione Automator


9

Ho scritto un'applicazione Automator con il seguente script 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 necessita di una password. Quando lo stesso comando viene eseguito su Terminal, mi richiede una password ma quando viene eseguito come app Automator, non mi richiede alcun input. Esiste un modo per passare a livello di codice la password a questo sudo all'interno dello script di Automator? So che questa non è una pratica sicura, ma voglio ancora farlo poiché il mio sistema è ragionevolmente sicuro e intatto da chiunque non sia me.

Un metodo "esegui script di shell ... con privilegi di amministratore" fornisce il seguente errore:

inserisci qui la descrizione dell'immagine

Risposte:


10

AppleScript dovrebbe consentirti 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 la richiede con un prompt OS X standard:

È possibile utilizzarlo nel flusso di lavoro di Automator in uno dei due modi seguenti:


1
@Amit osascript è per bash :) Se si desidera AppleScript puro nell'azione di AppleScript Automator, rimuovere osascript in questo modo: do shell script "sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist" with administrator privileges( Effettuare una delle seguenti operazioni da questa immagine )
GRG

1
Sì, ha funzionato come un incantesimo! Grazie per la tua pazienza ... stupidami!
TheLearner

2

aspettarsi

È possibile invece utilizzare uno strumento come aspettarsi di scrivere l'interazione con sudo. expectè progettato per questa situazione.

prevede: dialogo programmato con programmi interattivi

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 consiste nell'utilizzare il comando do shell script di AppleScript . Il comando offre un'opzione con privilegi di amministratore . Le copertine della nota tecnica 2065 di Apple eseguono script di shell in dettaglio.

eco

Altri approcci comuni a questo problema implicano l'uso echoper passare la password sudocon una pipe. Questa risposta StackOverflow discute questo e altri approcci correlati, Come fornire la password a un comando che ne richiede uno in bash?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.