我尝试在后台运行ngrok
./ngrok -subdomain test -config=ngrok.cfg 80 &
Run Code Online (Sandbox Code Playgroud)
该过程正在运行
[1] 3866
Run Code Online (Sandbox Code Playgroud)
并且子域不起作用.
它适用于
./ngrok -subdomain test -config=ngrok.cfg 80
Run Code Online (Sandbox Code Playgroud)
你们有谁知道这里发生了什么?
mar*_*ger 20
为解释在这里
ngrok -log=stdout 80 > /dev/null &
Run Code Online (Sandbox Code Playgroud)
Art*_*iev 18
如前所述,您可以在后台运行ngrok
./ngrok http 8080 > /dev/null &
Run Code Online (Sandbox Code Playgroud)
接下来,您可以使用curl,例如jq命令行JSON处理器.
export WEBHOOK_URL="$(curl http://localhost:4040/api/tunnels | jq ".tunnels[0].public_url")"
Run Code Online (Sandbox Code Playgroud)
您的URL可以从$ WEBHOOK_URL env变量访问,您可以在任何地方使用它.
Kir*_*hov 12
简单:ngrok http 80 --log=stdout > ngrok.log &成功了。
在Ngrok 2中,-log既不必要也不可用(尽管您可以控制配置文件中的日志级别).ngrok > /dev/null &足够了.
小智 7
curl http://127.0.0.1:4040/api/tunnels
Run Code Online (Sandbox Code Playgroud)
你会看到 public_url 信息。
这是示例。 https://i.stack.imgur.com/V0905.png
这是我编写的一个ngrok在后台运行的小 bash 脚本。然后它尝试NGROK_PUBLIC_URL通过调用curl命令(针对http://127.0.0.1:4040/api/tunnels)和sed命令(提取 ngrok 公共 URL)来设置变量。这一切都在循环内运行,直到NGROK_PUBLIC_URL有一个有效值,因为它的隧道通常需要 ngrok 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 ]"
Run Code Online (Sandbox Code Playgroud)
该脚本将端口作为可选的命令行参数,即
$ . start-ngrok.sh 1234
Run NGROK in background on port [ 1234 ]
Extracting ngrok public url ...
NGROK_PUBLIC_URL => [ 75d5faad.ngrok.io ]
Run Code Online (Sandbox Code Playgroud)
...但8080如果未提供端口,则会在端口上运行...
$ . start-ngrok.sh
Run NGROK in background on port [ 8080 ]
Extracting ngrok public url ...
NGROK_PUBLIC_URL => [ 07e7a373.ngrok.io ]
Run Code Online (Sandbox Code Playgroud)
在NGROK_PUBLIC_URL现在包含公开网址即
$ echo $NGROK_PUBLIC_URL
07e7a373.ngrok.io
Run Code Online (Sandbox Code Playgroud)
这可以在您的应用程序中访问/使用。
注意:此脚本需要来源(
. start-ngrok.shORsource start-ngrok.sh)。这是因为它正在设置一个环境变量,如果在新的 shell(即./start-ngrok.sh)中正常运行,该变量将不可用。有关更多信息,请参阅https://superuser.com/q/176783。
您还可以使用pkill/ killetc创建一个小脚本来停止后台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"
Run Code Online (Sandbox Code Playgroud)
./ngrok http 5000 > /dev/null &然后运行curl localhost:4040/status以检查URL
所以我尝试了一切,但在 2020 年有效的最佳答案是:
如何创建公共本地主机(8080):
ngrok -log=stdout 80 > ngrok.log &
Run Code Online (Sandbox Code Playgroud)
然后
curl http://127.0.0.1:4040/api/tunnels
Run Code Online (Sandbox Code Playgroud)
运行 ./ngrok http(端口号), 这会将ngrok隧道作为后台进程运行。Ngrok通常会打开一个显示分配的URL的windown,但是由于我们使用的是nohup命令,因此这是不可见的。
因此,然后运行curl http://127.0.0.1:4040/api/tunnels 也可以看到ngrok分配的URL
小智 5
尝试作为服务运行。并从 ngrok 网站查看。我在 Raspberry pi 3 上尝试了 ngrok 版本 2.2.8。
ngrok.service 作为
[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
Run Code Online (Sandbox Code Playgroud)
配置文件:ngrok.yml authtoken:
tunnels:
<your Tunel Name >:
proto: http
addr: 80
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28581 次 |
| 最近记录: |