我尝试使用
在后台运行ngrok./ngrok -subdomain test -config=ngrok.cfg 80 &
流程正在运行
[1] 3866
并且子域名不起作用。
适用于
./ngrok -subdomain test -config=ngrok.cfg 80
你们谁都知道这里发生了什么?
答案 0 :(得分:20)
解释here
ngrok -log=stdout 80 > /dev/null &
答案 1 :(得分:12)
访问本地计算机上的http://localhost:4040/status,或在此处查看更多内容:View random ngrok URL when run in background。
答案 2 :(得分:12)
如前所述,您可以使用
在后台运行ngrokpip install git+git://github.com/fchollet/keras.git
接下来,您可以使用curl,例如./ngrok http 8080 > /dev/null &
命令行JSON处理器。
jq
您的网址可以从$ WEBHOOK_URL env变量访问,您可以在任何地方使用它。
答案 3 :(得分:8)
在Ngrok 2中,-log既不必要也不可用(尽管您可以控制配置文件中的日志级别)。 ngrok > /dev/null &
就足够了。
答案 4 :(得分:8)
简单:{{1}}可以解决问题。
答案 5 :(得分:7)
如果您想使用多个shell窗口或在单个SSH会话中在后台运行任何服务,最简单的方法是使用screen。
要在Centos Linux上安装,请使用yum install screen
然后在参数中的screen
命令之后,像任何其他命令ngrok
一样启动。
分离是屏幕中最强大的部分。屏幕允许您从窗口中分离并稍后重新附加。
如果您的网络连接失败,屏幕将自动分离您的会话! 您可以使用“ Ctrl-a ”“ D ”从窗口中分离。
这会让你回到你的shell中。
所有屏幕窗口仍然存在,您可以稍后使用screen -r
答案 6 :(得分:6)
运行fgets
然后./ngrok http 5000 > /dev/null &
检查网址
答案 7 :(得分:5)
运行 ./ ngrok http(端口号)& 这将ngrok隧道作为后台进程运行。 Ngrok通常打开一个显示指定URL的窗口,但由于我们使用的是nohup命令,因此不可见。
然后,运行 curl http://127.0.0.1:4040/api/tunnels 也看到ngrok指定的URL
答案 8 :(得分:3)
curl http://127.0.0.1:4040/api/tunnels
,您将看到public_url信息。
答案 9 :(得分:3)
使用以下脚本编写ngrok2
member.RuntimeMethodInfo.base.m_cachedData
这会将日志写入文件nohup.out
答案 10 :(得分:1)
尝试作为服务运行。并从ngrok网站查看。 我在Raspberry pi 3上尝试了ngrok 2.2.8版。
ngrok.service 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
答案 11 :(得分:1)
这是我写的一个bash脚本,它在后台运行ngrok
。然后,它尝试通过调用NGROK_PUBLIC_URL
命令(针对http://127.0.0.1:4040/api/tunnels)后跟curl
命令(提取ngrok公共URL)来设置sed
变量。所有这些都在循环内运行,直到NGROK_PUBLIC_URL
具有有效值为止,因为通常需要2到3秒钟的时间才能建立隧道。
start-ngrok.sh
#!/bin/sh
# Set local port from command line arg or default to 8080
LOCAL_PORT=${1-8080}
echo "Start ngrok in background on port [ $LOCAL_PORT ]"
nohup ngrok http ${LOCAL_PORT} &>/dev/null &
echo -n "Extracting ngrok public url ."
NGROK_PUBLIC_URL=""
while [ -z "$NGROK_PUBLIC_URL" ]; do
# Run 'curl' against ngrok API and extract public (using 'sed' command)
export NGROK_PUBLIC_URL=$(curl --silent --max-time 10 --connect-timeout 5 \
--show-error http://127.0.0.1:4040/api/tunnels | \
sed -nE 's/.*public_url":"https:..([^"]*).*/\1/p')
sleep 1
echo -n "."
done
echo
echo "NGROK_PUBLIC_URL => [ $NGROK_PUBLIC_URL ]"
该脚本将端口作为可选的命令行参数,即
$ . 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_PUBLIC_URL
现在包含公共网址,即
$ echo $NGROK_PUBLIC_URL
07e7a373.ngrok.io
可以在您的应用程序中对其进行访问/使用。
注意:该脚本需要来源(
. start-ngrok.sh
或source start-ngrok.sh
)。这是因为它设置了一个环境变量,如果在新的外壳程序(即./start-ngrok.sh
)中正常运行,该变量将不可用。有关更多信息,请参见https://superuser.com/q/176783。
您还可以使用pkill
/ kill
等创建一个小脚本来停止后台ngrok
进程:-
stop-ngrok.sh
#!/bin/sh
echo "Stopping background ngrok process"
kill -9 $(ps -ef | grep 'ngrok' | grep -v 'grep' | awk '{print $2}')
echo "ngrok stopped"
答案 12 :(得分:1)
所以我尝试了所有方法,但对此最好的答案是在2020年生效:
如何创建公共本地主机(8080):
ngrok -log=stdout 80 > ngrok.log &
然后
curl http://127.0.0.1:4040/api/tunnels
答案 13 :(得分:0)
您可以使用屏幕。以下是我如何使用它的示例:
screen -d -m~ /。/ ngrok http test.cc:8080
答案 14 :(得分:0)
nohup /usr/local/bin/ngrok --config /etc/ngrok.yml http 8080 &
如果您链接到ngrok帐户,则可以在ngrok站点中查看公共网址,而无需卷曲本地网址 公开网址https://dashboard.ngrok.com/status
答案 15 :(得分:0)
nohup ./ngrok http 80&
点击localhost:4040以获取ngrok分配的公共URL
答案 16 :(得分:0)
您可以使用cotunnel。这是ngrok的替代方案。 cotunnel安装脚本创建服务并在后台运行。
答案 17 :(得分:0)
另一种替代方法是使用ngrok npm module。如果安装了Node,则可以运行ngrok并打印出如下所示的URL:
require('ngrok').connect({ proto: 'http', port: 3000 }).then(url => {
console.log(url);
});
并非严格在后台运行它,但是我发现这是满足我的要求的最简单方法:启动ngrok和一个通过单个命令即可知道其ngrok url的Web服务器。
答案 18 :(得分:0)
./ngrok http 80 -log=stdout > /dev/null &
答案 19 :(得分:0)
在Windows Batch Script (.bat)中,如果你想不等待ngrok就执行下一个命令,使用start /b的以下命令:
start /b ngrok http 80 --log=stdout > ngrok.log &