Automatorアプリケーションにパスワードを渡す


9

システムでFTP接続を開くために、次のシェルスクリプトを使用してAutomatorアプリケーションを作成しました。

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

これは、sudoコマンドがパスワードを必要とすることを除いて、期待どおりに機能します。同じコマンドをターミナルで実行すると、パスワードの入力を求められますが、Automatorアプリとして実行すると、入力の入力を求められません。Automatorスクリプト内でこのsudoにプログラムでパスワードを渡す方法はありますか?これは安全な方法ではないことはわかっていますが、私のシステムはかなり安全で、私以外の誰にも影響を受けないので、引き続き実行したいと考えています。

「シェルスクリプトを実行して...管理者権限で」メソッドを実行すると、次のエラーが発生します。

ここに画像の説明を入力してください

回答:


10

AppleScriptでは、次のようにしてこれを行うことができますwith administrator privileges

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

これはパスワードを渡しませんが、標準のOS Xプロンプトでパスワードを要求します。

これをAutomatorワークフローで次の2つの方法のいずれかで使用できます。


1
@Amit osascriptをはbashのためのものです:)あなたはAppleScriptをAutomatorのアクションで純粋なAppleScriptをしたい場合は、このようなosascriptを削除しますdo shell script "sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist" with administrator privilegesこの絵から、次のDO 1
GRG

1
はい、これは魅力のように機能しました!あなたの忍耐に感謝します...ばかげた私!
TheLearner、2014年

2

期待する

代わりに、との対話をスクリプト化するように期待するようなツールを使用できsudoます。expectこのような状況のために設計されています。

期待-対話型プログラムとのプログラムされた対話

次のシェルスクリプトは、2つのコマンドで十分な場合があります。

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

AppleScriptおよび管理者権限

別のアプローチは、AppleScriptのdo shell scriptコマンドを使用することです。このコマンドは、管理者権限オプション付きを提供します。Appleのテクニカルノート2065では、シェルスクリプトについて詳しく説明しています。

エコー

この問題に対する他の一般的なアプローチには、を使用echoしてパスワードをに渡す方法が含まれますsudo。このStackOverflowの回答では、これとその他の関連するアプローチについて説明します。bashでパスワードを要求するコマンドにパスワードを提供する方法は?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.