Pyngrok 持续连接
Pyngrok to getting connecting continuously
我刚开始使用 ngrok,在使用标准程序时,我可以使用 ./ngrok tcp 22 启动隧道,然后在我的仪表板中看到该隧道打开,
但是我想用pyngrok,这里我用的时候:
from pyngrok.conf import PyngrokConfig
from pyngrok import ngrok
ngrok.set_auth_token("<NGROK_AUTH_TOKEN>")
pyngrok_config = PyngrokConfig(config_path="/opt/ngrok/ngrok.yml")
ngrok.get_tunnels(pyngrok_config=pyngrok_config)
ssh_url = ngrok.connect()
它连接并生成隧道,但我在仪表板中看不到任何打开的内容,为什么?
可能是因为 python 脚本执行并生成 URL 然后停止并从中退出,但是如何让它保持 运行,或者如何启动一个使用 python 甚至 API 的隧道?请建议正确的脚本,使用 python 或 API?
具有 ngrok
隧道的线程将在 Python 进程终止后立即终止。所以你是对的,发生这种情况的原因是你的脚本寿命不长。最简单的方法是 by following the example in the documentation.
另一个问题是您如何设置 authtoken
。由于您没有使用默认的 config_path
,您需要在设置 authtoken
之前设置它,以便它在正确的文件中更新(您还需要将它传递给 connect()
).有几种方法可以做到这一点,但最简单的方法 from the docs 是只更新默认配置(因为如果您不将 pyngrok_config
传递给任何未来的方法调用,就会使用默认配置) .
我还看到你的响应变量是 ssh_url
,所以你可能想启动一个到 80
(默认)以外的端口的 TCP 隧道—perhaps you've configured this in your ngrok.yml
,但如果没有,我已将调用更新为 connect()
以确保这是为您启动的隧道类型,以防其他人尝试使用相同的代码片段。
完全公开,我是 pyngrok
的开发者。这是根据我的更改更新的代码片段。
import os, time
from pyngrok.conf import PyngrokConfig
from pyngrok import ngrok, conf
conf.get_default().config_path = "/opt/ngrok/ngrok.yml"
ngrok.set_auth_token(os.environ.get("NGROK_AUTH_TOKEN"))
ssh_tunnel = ngrok.connect(22, "tcp")
ngrok_process = ngrok.get_ngrok_process()
try:
# Block until CTRL-C or some other terminating event
ngrok_process.proc.wait()
except KeyboardInterrupt:
print(" Shutting down server.")
ngrok.kill()
我刚开始使用 ngrok,在使用标准程序时,我可以使用 ./ngrok tcp 22 启动隧道,然后在我的仪表板中看到该隧道打开,
但是我想用pyngrok,这里我用的时候:
from pyngrok.conf import PyngrokConfig
from pyngrok import ngrok
ngrok.set_auth_token("<NGROK_AUTH_TOKEN>")
pyngrok_config = PyngrokConfig(config_path="/opt/ngrok/ngrok.yml")
ngrok.get_tunnels(pyngrok_config=pyngrok_config)
ssh_url = ngrok.connect()
它连接并生成隧道,但我在仪表板中看不到任何打开的内容,为什么?
可能是因为 python 脚本执行并生成 URL 然后停止并从中退出,但是如何让它保持 运行,或者如何启动一个使用 python 甚至 API 的隧道?请建议正确的脚本,使用 python 或 API?
具有 ngrok
隧道的线程将在 Python 进程终止后立即终止。所以你是对的,发生这种情况的原因是你的脚本寿命不长。最简单的方法是 by following the example in the documentation.
另一个问题是您如何设置 authtoken
。由于您没有使用默认的 config_path
,您需要在设置 authtoken
之前设置它,以便它在正确的文件中更新(您还需要将它传递给 connect()
).有几种方法可以做到这一点,但最简单的方法 from the docs 是只更新默认配置(因为如果您不将 pyngrok_config
传递给任何未来的方法调用,就会使用默认配置) .
我还看到你的响应变量是 ssh_url
,所以你可能想启动一个到 80
(默认)以外的端口的 TCP 隧道—perhaps you've configured this in your ngrok.yml
,但如果没有,我已将调用更新为 connect()
以确保这是为您启动的隧道类型,以防其他人尝试使用相同的代码片段。
完全公开,我是 pyngrok
的开发者。这是根据我的更改更新的代码片段。
import os, time
from pyngrok.conf import PyngrokConfig
from pyngrok import ngrok, conf
conf.get_default().config_path = "/opt/ngrok/ngrok.yml"
ngrok.set_auth_token(os.environ.get("NGROK_AUTH_TOKEN"))
ssh_tunnel = ngrok.connect(22, "tcp")
ngrok_process = ngrok.get_ngrok_process()
try:
# Block until CTRL-C or some other terminating event
ngrok_process.proc.wait()
except KeyboardInterrupt:
print(" Shutting down server.")
ngrok.kill()