如何找到已与ngrok一起使用的子域列表?

时间:2015-12-23 16:16:47

标签: ngrok

我们在CI版本中使用ngrok,以便使用第三方服务测试API。事实证明这是非常成功的,除了支持并发构建似乎要困难得多。

为了支持并发性,我们决定获得保留域名,让我们说:

  • 定制域
  • 定制DOMAIN2
  • 定制DOMAIN3

我编写了一个脚本来检查可用域,并使用它找到的第一个可用域。该脚本很粗糙,当我们尝试使用已经在使用的子域时,它依赖于ngrok终止:

#!/bin/bash

wget https://dl.ngrok.com/ngrok_2.0.19_linux_amd64.zip
unzip ngrok_2.0.19_linux_amd64.zip
./ngrok authtoken <account_token>
./ngrok http -subdomain=custom-domain 5000 &
sleep 5
curl http://localhost:4040/status
if [[ $? -eq 0 ]]
then
  export HOST=custom-domain.ngrok.io
else
  ./ngrok http -subdomain=custom-domain2 5000 &
  sleep 5
  curl http://localhost:4040/status
  if [[ $? -eq 0 ]]
  then
    export HOST=custom-domain2.ngrok.io
  else
    ./ngrok http -subdomain=custom-domain3 5000 &
    sleep 5
    curl http://localhost:4040/status
    if [[ $? -eq 0 ]]
    then
      export HOST=custom-domain3.ngrok.io
    else
      exit 1
    fi
  fi
fi

我尝试重构这个以使用客户端API,但客户端API只查看localhost,它不知道互联网上其他地方使用的子域名。我正在寻找的确有可能,因为ngrok.io网站本身确实列出了目前正在使用的子域名,我只需要弄清楚他们是如何做到的?我正在使用2.0版本。

使用脚本方法,它似乎在使用custom-domain时起作用,但在使用2或3时,我们似乎在POST到端点时出现错误,其中唯一可疑的是日志是:

(某些数字已更改)

t=2015-12-21T16:03:17+0000 lvl=warn msg="failed to open private leg" id=094b633d8754 privaddr=localhost:4567 err="dial tcp 127.0.0.1:4567: connection refused"

1 个答案:

答案 0 :(得分:0)

ngrok 的 REST API 有一个 endpoint for listing all online tunnels

<块引用>

列出当前在该帐户上运行的所有在线隧道。