Eu escrevi um aplicativo Automator com o seguinte script de shell para abrir uma conexão FTP no meu sistema:
sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist
osascript -e 'tell app "Finder" to display alert "SFTP Opened"'
Isso funciona exatamente como o esperado, exceto que o comando sudo precisa de uma senha. Quando o mesmo comando é executado no Terminal, ele solicita uma senha, mas quando executado como um aplicativo Automator, não solicita nenhuma entrada. Existe alguma maneira de passar programaticamente a senha para este sudo no script do Automator? Sei que não é uma prática segura, mas ainda quero fazê-lo, pois meu sistema é razoavelmente seguro e intocado por qualquer pessoa que não seja eu.
Um método "fazer shell script ... com privilégios de administrador" está fornecendo o seguinte erro:
fonte
do shell script "sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist" with administrator privileges
( Do uma das seguintes opções a partir desta imagem )Espero
Em vez disso, você pode usar uma ferramenta como a expectativa de script da interação
sudo
.expect
foi projetado para esta situação.O seguinte script de shell pode ser suficiente para seus dois comandos:
AppleScript e com privilégios de administrador
Uma abordagem alternativa é usar o comando do shell script do AppleScript . O comando oferece uma opção com privilégios de administrador . As capas da Nota Técnica 2065 da Apple fazem shell script em detalhes.
eco
Outras abordagens comuns para esse problema envolvem o uso
echo
para passar a senhasudo
com um pipe. Esta resposta do StackOverflow discute esta e outras abordagens relacionadas: Como fornecer senha para um comando que solicita uma no bash?fonte