如何以编程方式测试ngrok是否已在运行

时间:2017-08-02 06:07:23

标签: javascript node.js ubuntu ngrok

我们在本地主机端口ngrok上运行了http://localhost:4000。我们可以手动测试ngrok是否已经运行,使用以下步骤:

检查ngrok是否已在运行:

如果连接成功,将显示以下视觉效果:

ngrok online

如果没有显示上述视觉效果,则ngrok根本没有运行。

  • 隧道部分下,将显示以下视觉效果:

localhost PORT connected to ngrok online

如果未显示上述视觉效果,则ngrok未在PORT 4000上运行。

要在http://localhost:4000上启动ngrok,我们需要运行ngrok http 4000。运行此命令后,将显示上述视觉效果。

是否有一些programmatic way来确定ngrok是否已在端口上运行?

4 个答案:

答案 0 :(得分:1)

运行此命令以查看使用端口:

sudo lsof -PiTCP -sTCP:LISTEN

答案 1 :(得分:1)

您可以通过python检查:

import socket;
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = sock.connect_ex(('127.0.0.1',4000))
print(result)
if result == 0:
    print "Port is not open"
else:
    print "Port is open"

P.S。如果端口正在使用,则结果为0,否则为61.

答案 2 :(得分:1)

运行netstat -tulnap | grep ngrok

netstat -tulnap显示计算机上正在运行的进程 用于ngrok进程的grep ngrok过滤器。

答案 3 :(得分:1)

对于其他被这个问题绊倒的人, 使用curl或您选择的编程语言的任何请求库向http://localhost:4040/api/tunnels发出请求。它返回ngrok隧道及其URL的JSON格式响应,您可以获取该响应。如果未返回任何内容,则表明ngrok没有运行

例如python:

import requests
import json
from bs4 import BeautifulSoup
req = requests.get('http://127.0.0.1:4040/api/tunnels')
soup = BeautifulSoup(req.text, 'lxml')
tunnelsjson = json.loads(soup.find('p').text)
url = tunnelsjson['tunnels'][0]['public_url']
print(url)