ブラウザ上からシェルを実行したい。
そう思って調べてみると、こんな記事がありました。
しかし、そのままではうまくいかなかったので、手順を再整理しようと思います。
※利用は自己責任でお願いします(任意のプログラムをブラウザから実行できるため、セキュリティ的に危ういです)。
概要
実装の内容としては、以下のようになります。
- ブラウザ上に「hoge://<シェルが存在するパス>」を入力
- 作成したアプリケーションが起動する
- アプリケーションがシェルを実行する
スクリプトエディタ
まずは、アプリケーションを作成するために、スクリプエディタを起動します。
command + スペースキー
でSpotlightを起動script editor
を入力し、スクリプトエディタ.appを起動
- 新規書類を押下
- 以下のような画面が表示される
アプリ作成
- 起動したエディタより、以下をコピペします。
※「hoge」の部分は、登録したいURLスキーム名にしてください。
-- URLスキームで呼ばれる関数
on open location url_scheme
-- URLの引数を抽出
set AppleScript's text item delimiters to {"hoge://"}
set URL_ARGUMENT to text items of url_scheme
set AppleScript's text item delimiters to {""}
set SHELL_PATH to URL_ARGUMENT as Unicode text
-- シェル実行
do shell script SHELL_PATH
end open location
- 「ファイル」 > 「保存」を押下
- 任意の場所にアプリケーションとして保存します。
※アプリ名は、上記で設定した名前と統一しておきます。
- 保存した場所をFinderで開きます。
- アプリケーションを右クリックし、「パッケージの内容を表示」を押下
- 「Content」 > 「Info.plist」ファイルを開く(エディタは何でも良いです)
- 最終行あたりの</dist>の上に以下を挿入し、保存
※「hoge」の部分は、アプリ名と統一します
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>com.apple.ScriptEditor.id.hoge</string>
<key>CFBundleURLSchemes</key>
<array>
<string>hoge</string>
</array>
</dict>
</array>
- 作成したアプリをダブルクリックで実行し、アプリの存在をOSに認識させます(実行しても何も起きません)
動作確認
これで準備が整いました。
ブラウザから、「hoge://実行したいシェルのフルパス」を入力します。
※実行したいシェルに実行権限を与えるの忘れずに
そうすると、さきほど作成したアプリが起動し、URLで指定したシェルが実行されます。
最後に
今回作成したアプリは、ターミナル画面が表示されないようにしています。
ターミナル画面を表示させたい場合は、こちらの記事のコードを参考に作成してみると良いかと思います。
コメントを残す