Apple の脅威の通知と金銭目当てのスパイウェアへの対策について

しばらく返答が寄せられていないようです。 再度ディスカッションを開始するには、新たに質問してください。

Automator で シェルスクリプトの実行ができません

OSをMojave にアップデートしたら Automator のシェルスクリプトの実行が「署名が無効」を理由に実行ができなくなりました。


Mojave 以前、php をシェルスクリプトで利用するために

/System/Library/Automator/Run Shell Script.action/Contents/Resources/Shells.plist

の内容に php を追加し利用していました。

ユーザがアップロードしたファイル

Mojave以前は問題なく動いたのですが、Mojaveにアップデートしたら、Automator上に「署名が無効」で実行できないと表示されるようになりました。

ユーザがアップロードしたファイル


Shells.plist を書き換えたせいで、問題が起きているとは思うのですが、Shells.plist の署名を有効にする方法がわかりません。どのようにすればよろしいでしょうか?

iMac, macOS Mojave (10.14.2)

投稿日 2019/01/03 12:38

返信
スレッドに付いたマーク ベストな回答

投稿日 2019/01/04 13:31

当方 Mojave 未導入なので実際に試すことはできませんが...、Run Shell Script.action は署名済みなので、パッケージ内を勝手に改変したから動かなくなったのだと思います。


解決策はよく分かりませんが、こんな感じで上から順番に試してみてはどうでしょうか?

  • Shells.plist を (拡張属性等も含め) 元のとおりに書き換える
  • Time Machine から Shells.plist または Run Shell Script.action を持ってくる
  • 外付け HDD に Mojave をインストールして、そこから Shells.plist または Run Shell Script.action を移植
  • Run Shell Script.action をどこかに退避して、Mojave を上書きインストール


ーーーーー


あと、Automator で PHP を使うなら、こんな感じでどうでしょうか?


選択した Finder 項目を取得 等のアクション

シェルスクリプトを実行

シェル: /bin/bash 入力: 引数として

php <<'EOF' -- "$@"
<?php

$me = array_shift($argv); $argc --;

foreach ($argv as $f) {
    print $f . "\n";
}

?>
EOF


簡単に済ますなら、ワンライナーで


シェルスクリプトを実行

シェル: /bin/bash 入力: 引数として

php -r 'print $argv[1] . "\n";' -- "$@"


とか、


シェルスクリプトを実行

シェル: /bin/bash 入力: stdinへ

php -R 'print $argn . "\n";'
返信: 4
スレッドに付いたマーク ベストな回答

2019/01/04 13:31 miyakun への返信

当方 Mojave 未導入なので実際に試すことはできませんが...、Run Shell Script.action は署名済みなので、パッケージ内を勝手に改変したから動かなくなったのだと思います。


解決策はよく分かりませんが、こんな感じで上から順番に試してみてはどうでしょうか?

  • Shells.plist を (拡張属性等も含め) 元のとおりに書き換える
  • Time Machine から Shells.plist または Run Shell Script.action を持ってくる
  • 外付け HDD に Mojave をインストールして、そこから Shells.plist または Run Shell Script.action を移植
  • Run Shell Script.action をどこかに退避して、Mojave を上書きインストール


ーーーーー


あと、Automator で PHP を使うなら、こんな感じでどうでしょうか?


選択した Finder 項目を取得 等のアクション

シェルスクリプトを実行

シェル: /bin/bash 入力: 引数として

php <<'EOF' -- "$@"
<?php

$me = array_shift($argv); $argc --;

foreach ($argv as $f) {
    print $f . "\n";
}

?>
EOF


簡単に済ますなら、ワンライナーで


シェルスクリプトを実行

シェル: /bin/bash 入力: 引数として

php -r 'print $argv[1] . "\n";' -- "$@"


とか、


シェルスクリプトを実行

シェル: /bin/bash 入力: stdinへ

php -R 'print $argn . "\n";'

2019/01/04 14:00 miyakun への返信

> Apple側には、Script.action にも php をデフォルトで入れて欲しいとは思いますが。


なぜ PHP が入ってないのか私も不思議に思ってます。Apple にフィードバックしてみてはどうでしょうか?


フィードバック - Apple(日本)

https://www.apple.com/jp/feedback/

2019/01/04 13:36 Hiro__S への返信

解決策の提示ありがとうございます。


Shells.plist を直接編集するのではなく、一旦状況を戻して bash での実行に切り替えたいと思います。

Apple側には、Script.action にも php をデフォルトで入れて欲しいとは思いますが。

2019/01/04 14:59 miyakun への返信

ええと、もしかして、ご自分で再署名したい...ということだったのでしょうか?もしそうなら、できるできない以前にやるべきではありません。ファイルの書き換えと再署名は Apple がすべきこと。仮にできたとしても、このボードで議論すべき内容ではありません。

Automator で シェルスクリプトの実行ができません

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple ID を使ってご参加ください。