【发布时间】:2017-11-30 16:57:33
【问题描述】:
我正在尝试制作一个 python 脚本,当我在终端上运行代码时(在将 ngrok 可执行文件移动到 /usr/local/bin 之后)启动 0.tcp.ngrok.io 上的端口
p>ngrok tcp 22
我得到了这种输出
ngrok by @inconshreveable (Ctrl+C to quit)
Session Status connecting
Version 2.2.4
Region United States (us)
Web Interface http://127.0.0.1:4041
Forwarding tcp://0.tcp.ngrok.io:13014 -> localhost:22
Connections ttl opn rt1 rt5 p50 p90
0 0 0.00 0.00 0.00 0.00
我的第一次尝试是将子进程标准输出记录到变量中,但由于标准输出是循环的,stdout.read() 永远不会结束,这是代码
import subprocess
ngrok = subprocess.Popen(['ngrok','tcp','22'],stdout = subprocess.PIPE)
output_text = ngrok.stdout.read() # script stops here forever
[**code for getting domain:port from output_text**]
如何在不停止 ngrok 的情况下获取 stdout 到变量的“快照”?
还有其他方法吗(下一次尝试是在 localhost 上使用网络爬虫,但如果有其他命令的相关知识会很好,例如“top”)
提前致谢
【问题讨论】:
标签: python-3.x subprocess stdout popen ngrok