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

7
我们已经在本地端口上运行了ngrok,例如 http://localhost:4000。我们可以通过以下步骤手动测试 ngrok 是否已经运行:

检查 ngrok 是否已经运行:

如果连接成功,将会显示以下视图:

ngrok online

如果以上视图未显示,则 ngrok 没有运行。

  • Tunnels部分,将会显示以下视图:

localhost PORT connected to ngrok online

如果以上视图未显示,则 ngrok 没有运行在4000端口上。

要在http://localhost:4000上启动 ngrok,我们需要运行 ngrok http 4000 命令。运行此命令后,以上视图将会显示。

是否有某种程序化的方法来确定 ngrok 是否已经在该端口上运行?

4个回答

7

对于其他遇到此问题的人,请使用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)

如果您正在运行多个ngrok服务器,您需要使用:4041、:4042等端口。 - Ollie

2

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

sudo lsof -PiTCP -sTCP:LISTEN

感谢您!不过,有没有一种方法可以使用某种代码来检查这个呢? - Zameer Ansari

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"

附言:如果端口已被使用,则结果为0,否则为61。


1

运行 netstat -tulnap | grep ngrok

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


我想看看这个的JavaScript编程实现。 - Zameer Ansari

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接