这个问题有点老了,不过我想提供另一种更通用的选择,因为它不需要NodeJS。
curl --silent --show-error http://127.0.0.1:4040/api/tunnels | sed -nE 's/.*public_url":"https:..([^"]*).*/\1/p'
这个任务仅仅是检查调用 api/tunnels
的响应,通过对结果文本进行文本处理 (sed
) 来识别公共URL。
ngrok 会在 http://localhost:4040/api/tunnels
提供隧道信息。
curl -Ss http://localhost:4040/api/tunnels | jq -r '.tunnels[0].public_url'
=> https://719c933a.ap.ngrok.io
curl -Ss http://localhost:4040/api/tunnels | \
ruby -e 'require "json"; puts JSON.parse(STDIN.read).dig("tunnels", 0, "public_url")'
=> https://719c933a.ap.ngrok.io
json=$(curl -Ss http://127.0.0.1:4040/api/tunnels);
node -pe "var data = $json; data.tunnels[0].public_url"
=> https://719c933a.ap.ngrok.io