手軽にローカル環境を公開できる ngrok をよく使うのですが、無料版だと毎回実行ごとに トンネリングURL (公開URL) が変わってしまってなにかとめんどくさい。
ngrok コマンドを実行中のteminalから値をコピーすればいいんだけど、めんどくさい。
この記事で分かること / 分からないこと
分かること
ngrok でトンネリングされる URL を 1コマンドで取得する 方法
※ curl
コマンドと jq
コマンド を使用します。
分からないこと
ngrok でトンネリングされる URL を なんとか固定する 方法
こちらが知りたい場合はこちらの記事などが参考になると思います。(未検証)
https://qiita.com/miso_develop/items/bdcf15489b069ba1fa61
結論
curl -s localhost:4040/api/tunnels|jq -r ".tunnels[0].public_url"
※ 管理用 Web Interface が localhost:4040
で動作している場合
解説的なやつ
ngrok が標準で搭載している、 Client API を使っています。
そうなんです。 ngrok さん自前でAPIを用意してくれています。ありがたやぁ〜。
ngrok を起動すると、標準では localhost
の 4040
ポートで管理用 Web Interface を同時起動してくれます。 この時、localhost:4040/api/tunnels
に GETリクエストすると、 現在起動中のトンネルの状態をJSON で返してくれます(ngrok-documentation)。 これを jq
で処理します。
(蛇足) 毎回上のやつ打つのもめんどいやん?
alias 使ったらOK
alias ngrok_url="curl -s localhost:4040/api/tunnels|jq -r \".tunnels[0].public_url\""
これで1コマンドで出せます。
$ ngrok_url
https://XXXXXXXXXXXX.ap.ngrok.io
(蛇足の蛇足) mac 利用者なら pbcopy
使ってクリップボードにコピーできます
$ ngrok_url|pbcopy
=> クリップボード上にコピーされる
追記
私よりも先に考えついた人がいらっしゃったようです。 (初出の明示)
https://gist.github.com/rjz/af40158c529d7c407420fc0de490758b#gistcomment-3309439
https://easonwang.gitbook.io/web_advance/ngrok-shi-yong
https://gist.github.com/VMuliadi/3784123bf63d517f66c6a16bda591317