MACローカルマシンの中のサービスを外向けに公開できるという便利なツール「ngrok」。
http://localhost://5000 のアドレスを http://XXXXXX.ngrok.io のように。
しかし、有料会員にならない限りは、http://XXXXXX.ngrok.io みたいなランダムなホスト名になってしまいます。
このため、このアドレスが変わる度に、コードを毎回書き換えるのは面倒になってきます。
さらに、このアドレス、ターミナル上では目には見えるけど、手動でコピペするのも面倒だなと思い、
どうにかプログラム上で取得できないかと考えました。
調べていたところ、
↓こちらのアドレスを開くと、
↓このような画面を見ることができました。
ここに表示されているアドレスを
apple script と javascript を使って、取得することができました。
#!/usr/bin/env osascript
tell application "Terminal"
tell application "System Events" to keystroke "t" using command down #新しいタブを開く(ctrl + tab)
set currentTab to do script "ngrok http 5000" #ngrok http://localhost:5000 を開ける
end tell
delay 1
tell application "Google Chrome"
tell window 1
set newTab to make new tab with properties {URL:"http://localhost:4040/status"}
repeat while loading of active tab
delay 2 #URL は、window.onload 時には出力されていないので少し待つ
end repeat
tell active tab
execute javascript "var ele = document.getElementById('content');var html = ele.innerText;var result = html.match(/http:\/\/\S*/g);var url = result[0];" //この アドレス をどこかに保管してあげるとよい。
end tell
end tell
end tell
ここで取得した アドレスを 外から見えるところに保管して置くといいかもしれない。
もっと効率のいい取り方があるのかもしれませんが、とりあえずできたということで。