Terminal ngrok在后台运行
我试着在后台用Terminal ngrok在后台运行,terminal,ngrok,Terminal,Ngrok,我试着在后台用 ./ngrok -subdomain test -config=ngrok.cfg 80 & 进程正在运行 [1] 3866 子域不起作用 它与 ./ngrok -subdomain test -config=ngrok.cfg 80 你们中有人知道这里发生了什么吗?如前所述 在Ngrok 2中,-log既不必要也不可用(尽管您可以在配置文件中控制日志级别)ngrok>/dev/null&就足够了 访问您的本地计算机,或在此处查看更多信息:。使用下面的ngrok2脚
./ngrok -subdomain test -config=ngrok.cfg 80 &
进程正在运行
[1] 3866
子域不起作用
它与
./ngrok -subdomain test -config=ngrok.cfg 80
你们中有人知道这里发生了什么吗?如前所述
在Ngrok 2中,-log既不必要也不可用(尽管您可以在配置文件中控制日志级别)
ngrok>/dev/null&
就足够了 访问您的本地计算机,或在此处查看更多信息:。使用下面的ngrok2脚本
nohup ngrok http 3000 &
如果您想使用多个shell窗口或从一个SSH会话在后台运行任何服务(最简单的方法是使用),这将把日志写入文件nohup.out 要在Centos Linux上安装,请使用
yum安装屏幕
然后像任何其他命令一样启动屏幕
,然后在参数中键入ngrok
命令
分离是屏幕最强大的部分。屏幕允许您从窗口分离并稍后重新连接
如果网络连接失败,屏幕将自动断开会话!
您可以使用“Ctrl-a”D”从窗口分离
这会让你回到你的壳里
所有屏幕窗口仍然存在,您可以稍后使用
screen-r
运行/ngrok http 5000>/dev/null&
重新连接到它们,然后curl localhost:4040/status
检查url运行/ngrok http(端口号)&
这运行ngrok隧道作为后台进程。
Ngrok通常会打开一个窗口,显示指定的URL,但由于我们使用的是nohup命令,因此不可见
因此,然后运行curl
也可以查看ngrok分配的URL,如前所述,您可以在后台使用
./ngrok http 8080 > /dev/null &
接下来,您可以使用curl,例如jq
命令行JSON处理器
export WEBHOOK_URL="$(curl http://localhost:4040/api/tunnels | jq ".tunnels[0].public_url")"
您的URL可以从$WEBHOOK\u URL env变量访问,您可以在任何地方使用它。尝试作为服务运行。并从ngrok网站查看。 我在树莓皮3上尝试了ngrok版本2.2.8 ngrok.as服务
[Unit]
Description=Share local port(s) with ngrok
After=syslog.target network.target
[Service]
Type=simple
Restart=always
RestartSec=1min
StandardOutput=null
StandardError=null
ExecStart=/usr/local/sbin/ngrok start --log /var/log/ngrok.log --config /etc/ngrok.yml --all
ExecStop=/usr/bin/killall ngrok
[Install]
WantedBy=multi-user.target
配置文件:ngrok.yml
authtoken:
tunnels:
<your Tunel Name >:
proto: http
addr: 80
隧道:
:
协议:http
地址:80
您可以使用屏幕。以下是我如何使用它的示例:
screen-d-m~//ngrok-http-test.cc:8080
您将看到公共url信息
下面是一个例子。
如果你用ngrok账号链接,那么你可以在ngrok站点查看公共url,不需要卷曲本地url
公共urlnohup./ngrok http 80&
点击localhost:4040获取ngrok分配的公共URL,这里是我编写的一个小bash脚本,它在后台运行。然后,它尝试通过调用
curl
命令(反对),然后调用sed
命令(提取NGROK公共URL),来设置NGROK\u PUBLIC\u URL
变量。这一切都在一个循环中运行,直到NGROK_PUBLIC_URL
有一个有效值,因为它的隧道建立通常需要NGROK 2或3秒
start ngrok.sh
脚本将端口作为可选的命令行参数,即
$ . start-ngrok.sh 1234
Run NGROK in background on port [ 1234 ]
Extracting ngrok public url ...
NGROK_PUBLIC_URL => [ 75d5faad.ngrok.io ]
。。。但如果未提供端口,则将在端口8080
上运行
$ . start-ngrok.sh
Run NGROK in background on port [ 8080 ]
Extracting ngrok public url ...
NGROK_PUBLIC_URL => [ 07e7a373.ngrok.io ]
NGROK\u PUBLIC\u URL
现在包含公共URL,即
$ echo $NGROK_PUBLIC_URL
07e7a373.ngrok.io
这可以在您的应用程序中访问/使用
注意:此脚本需要源代码(启动ngrok.sh
或源代码启动ngrok.sh
)。这是因为它正在设置一个环境变量,如果在新shell中正常运行(即/start ngrok.sh
),该环境变量将不可用。有关更多信息,请参阅
您还可以使用pkill
/kill
等创建一个小脚本来停止后台ngrok
进程:-
停止ngrok.sh
简单:
ngrok http 80--log=stdout>ngrok.log&
成功了。所以我尝试了所有方法,但在2020年最有效的答案是:
如何创建公共本地主机(8080):
然后
你可以用。这是ngrok替代方案。cotunnel安装脚本创建服务并在后台自行工作。另一种选择是使用。如果已安装Node,则可以运行ngrok并打印URL,如下所示:
require('ngrok')。连接({proto:'http',端口:3000})。然后(url=>{
console.log(url);
});
不是严格地在后台运行它,但我发现这是满足我需求的最简单的方法:启动ngrok和一个web服务器,该服务器在一个命令中就知道它的ngrok url。不适用于ngrok2。有新版本的想法吗?@toas939哦,谢谢你!答案太多,没有一个是正确的。如果您希望在生产环境中运行此服务,而不必打开终端,您可以创建并运行ngrok作为一项服务,它将在机器启动时自动启动。在这里查看说明@dave4jr:ngrok客户端中是否包含ngrok链接,还是必须安装其他链接?服务命令未被识别ngrok@AndyFaizan不幸的是,这确实需要一点额外的费用,我忘记了我们公司为此支付了多少费用,但我不记得这是多少。但我如何知道访问我的服务的URL?如果你想这样做,你必须在前台运行它(AFAIK)。后台运行主要有助于作为服务运行,而您可能更了解您的域。请参阅我的答案,这是一种方法。还有Artem的答案(附带我的一条评论,对其进行轻微修改)@奥利夫:检查URL最简单的方法是登录Ngrok网页并使用仪表板。如果没有链接就无法使用答案,通常认为这是一个糟糕的答案。或者在Ngrok网站上注册一个免费帐户,并将本地安装连接到它,然后你就可以了
./ngrok http 80 -log=stdout > /dev/null &
$ . start-ngrok.sh 1234
Run NGROK in background on port [ 1234 ]
Extracting ngrok public url ...
NGROK_PUBLIC_URL => [ 75d5faad.ngrok.io ]
$ . start-ngrok.sh
Run NGROK in background on port [ 8080 ]
Extracting ngrok public url ...
NGROK_PUBLIC_URL => [ 07e7a373.ngrok.io ]
$ echo $NGROK_PUBLIC_URL
07e7a373.ngrok.io
#!/bin/sh
echo "Stopping background ngrok process"
kill -9 $(ps -ef | grep 'ngrok' | grep -v 'grep' | awk '{print $2}')
echo "ngrok stopped"
ngrok -log=stdout 80 > ngrok.log &
curl http://127.0.0.1:4040/api/tunnels
./ngrok http 80 -log=stdout > /dev/null &