web-dev-qa-db-ja.com

Mavericksでsshを介して起動すると、Applescriptがエラー(-600)で失敗する

私はこれを検索しようとしましたが、同様の問題を抱えている他の人を見ましたが、どこにも答えが見つからなかったようです..。

Macをリモート制御できるようにssh上で実行しようとしているAppleScriptがあります。これは以前はOSX10.8で機能していましたが、10.9にアップグレードしてからは機能しなくなったようです。

私が実行しているコマンドは次のとおりです。

ssh <user>@mymac.local "osascript -e 'tell application \"iTunes\" to play'"
  • Sshセッションが正しく開くように、RSAキーをすでに設定しています
  • Macが現在ログインして実行しているのと同じユーザーとして接続しています
  • iTunesは、スクリプトの起動時にそのユーザーと一緒にMacで実行されています

スクリプトは失敗し、次のように戻ります。

execution error: iTunes got an error: Application isn’t running. (-600)

同様に、以前使用していた他の多くのスクリプトも10.9で同じエラーで壊れているようです。したがって、これは、iTunesや特定の問題ではなく、ssh上で実行されているという事実に関連しているようです。応用。

AppleScriptをアプリケーションとしてパッケージ化し、リモートMacに保存してから、sshセッション内から開いてみましたが、これも失敗します。

ssh <user>@mymac.local
open "~/Desktop/Play Music.app"

(「PlayMusic.app」)はアプリとしてエクスポートされたapplescriptです)。

これはsshセッション内のエラーを報告しませんが、リモートMacにapplescriptダイアログが表示されます。 enter image description here

Macでcrontabを使用してスケジュールされたスクリプトもいくつかありますが、これらもアップグレード後に失敗します。

これはマーベリックスの一部としてのある種のセキュリティ変更だと思いますが、それを再び機能させる方法を見つけることができないようです。誰かがこれに対する解決策を持っていますか?

22
John Martin

Application isn’t running(-600)オペレーティングシステムエラー です。

オペレーティングシステムエラーは、AppleScriptまたはアプリケーションがMacOSにサービスを要求したときに発生するエラーです。それらはまれであり、多くの場合それらを報告する以外にスクリプトでそれらについてできることは何もありません。

18
Parag Bafna

ああ!私はこれが答えになることを望んでいませんが、ほぼすべてを試した後、これは再起動後に機能しているようです....私の推測では、appleeventsdの何かが混乱しました(appleeventsdだけを単独で再起動しても混乱しませんでした) t何かを修正します)。再起動後、osascriptは再び動作しているようです。これが完全に修正されているとはまだ確信していませんが、今のところ機能しているようです...

8
John Martin

私にとっては、Apple Xcodeの資格)でした。

具体的には、

com.Apple.security.temporary-exception.Apple-events

配列として設定します

次に、それに2つのアイテムを追加します。

com.Apple.Finder

com.Apple.iTunes

参照: OS Xを10.9にアップグレードすると、AppleScriptが機能しなくなります

5
Jordan

AppleScriptは問題ではありません。

[システム環境設定]> [セキュリティとプライバシー]> [プライバシー]> [ユーザー補助]を開き、アクセスを許可するアプリケーションを確認して、支援デバイスとアプリケーションへのアクセスを有効にします。

詳細: https://support.Apple.com/en-us/HT202866

Jacob Salmelaは、コマンドラインからこれを行うためのユーティリティも作成しました。

http://jacobsalmela.com/os-x-yosemite-enable-access-assistive-devices-command-line/

3
Dennis Hoer

私にとってこれは、gitkを開こうとしたときに起こりました。以前にいたブランチに戻ると、gitkを再び開くことができました

2
Yo Ludke

コマンドラインから新しいバージョンのMacOSXで「システムイベント用」というメッセージが機能しないことに混乱しました。

osascript -e 'tell application "System Events" to display dialog "Build finished"'

Applescriptの構文は(に変更されましたか?)次のようになります。

osascript -e 'display dialog "Build finished"'
0

システムイベントは、OS Xの非常に厄介なasshatコンポーネントです。これは、恐ろしい「アプリケーションが実行されていません-600」エラーを回避するための私の方法です。

set app_name to "System Events"
set the_pid to (do Shell script "ps ax | grep " & (quoted form of app_name) & "$
if the_pid is not "" then do Shell script ("kill -9 " & the_pid)

tell application "System Events"
-- activate  
end tell

「システムイベント」をkill-9で強制終了してから、再起動します。

0
benmarbles

2k19からこんにちは:)以下のアプローチは私に役立ちました

tell app "app_name"
    launch
    delay 2
end tell
tell app "app_name"
    do something usefull
end tell

または

osascript -e "tell app \"app_name\"" -e "launch" -e "delay 2"-e "end tell" -e "tell app \"app_name\"" -e "do someting usefull" - e "end tell"
0
idzmitry

@benmarblesコードは、2行目の終わりに何かが欠けているようです-コンパイルすらしません。

とにかく、私は「画像イベント」で同じ問題を見ました、そして私はそのスクリプトの単純化されたバージョンでそれを解決しました。これが私がそれを処理する方法です:

tell application "System Events" to set thePID to (unix id of process "Image Events")
set killCMD to ("kill -9 " & thePID) as text
do Shell script killCMD with administrator privileges

Image EventsSystem Eventsに置き換えて、代わりにそのプロセスを強制終了します。システムイベントプロセスはそれ自体を存続させるため、再起動するために何もする必要はありません。

0
Matt Strange

GUIスクリプトを実行できなかったときに同じエラーが発生しましたが、その特定のアプリの[システム環境設定]> [セキュリティとプライバシー]> [プライバシー]> [ユーザー補助]設定を変更し、各行の間にdelay 0.5を追加すると修正されました。

0
S.Doe_Dude