私はバックグラウンドでngrokを実行してみました
./ngrok -subdomain test -config=ngrok.cfg 80 &
プロセスが実行されています
[1] 3866
サブドメインは機能しません。
で動作します
./ngrok -subdomain test -config=ngrok.cfg 80
あなたの誰もがここで何が起こっているか知っていますか?
説明通り こちら
ngrok -log=stdout 80 > /dev/null &
前に説明したように、バックグラウンドでngrokを実行できます
./ngrok http 8080 > /dev/null &
次に、curlを使用して、たとえばjq
コマンドラインJSONプロセッサを使用できます。
export WEBHOOK_URL="$(curl http://localhost:4040/api/tunnels | jq ".tunnels[0].public_url")"
uRLは$ WEBHOOK_URL env変数からアクセスでき、どこでも使用できます。
ローカルマシンで http:// localhost:4040/status にアクセスするか、ここで詳細を参照してください: バックグラウンドで実行されたときにランダムなngrok URLを表示 。
Ngrok 2では、-logは不要であり、使用できません(ただし、構成ファイルでログレベルを制御できます)。 ngrok > /dev/null &
十分なものです。
複数のシェルウィンドウを使用する場合、または最も簡単な方法は screen を使用する単一のSSHセッションからバックグラウンドでサービスを実行する場合。
Centos Linuxにインストールするには、yum install screen
次に、他のコマンドscreen
のように開始し、その後にパラメーター内でngrok
コマンドを入力します。
デタッチは画面の最も強力な部分です。画面を使用すると、ウィンドウからデタッチし、後で再アタッチできます。
ネットワーク接続に失敗すると、画面は自動的にセッションを切断します! 「Ctrl-a」「[〜#〜] d [〜#〜」を使用してウィンドウからデタッチできます。 ])。
これにより、シェルに戻ります。
すべての画面ウィンドウはまだそこにあり、後でscreen -r
実行./ngrok http 5000 > /dev/null &
その後curl localhost:4040/status
URLを確認する
実行./ ngrok http(ポート番号)&これにより、ngrokトンネルがバックグラウンドプロセスとして実行されます。 Ngrokは通常、割り当てられたURLを示すウィンドウを開きますが、Nohupコマンドを使用しているため、これは表示されません。
したがって、curl http://127.0.0.1:4040/api/tunnelsを実行すると、ngrokによって割り当てられたURLも表示されます
curl http://127.0.0.1:4040/api/tunnels
public_url情報が表示されます。
以下に例を示します。 https://i.stack.imgur.com/V0905.png
以下のスクリプトをngrok2に使用します
Nohup ngrok http 3000 &
これにより、ログがファイルNohup.outに書き込まれます
サービスとして実行してみてください。 ngrok Webサイトから確認してください。 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
そのためにscreenを使用できます。使用方法の例を次に示します。
screen -d -m〜/./ ngrok http test.cc:8080
これは、バックグラウンドでngrok
を実行する小さなbashスクリプトです。次に、curl
コマンドを呼び出して( http://127.0.0.1:4040/api/tunnels )、その後にsed
コマンド(ngrokを抽出する)を呼び出して、NGROK_PUBLIC_URL
変数を設定しようとします。パブリックURL)。 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
にはパブリックURLが含まれるようになりました。
$ echo $NGROK_PUBLIC_URL
07e7a373.ngrok.io
これは、アプリケーションでアクセス/使用できます。
注:このスクリプトはsourced(
. start-ngrok.sh
ORsource start-ngrok.sh
)これは、新しいシェルで正常に実行した場合に使用できない環境変数を設定しているためです(つまり、./start-ngrok.sh
)。 https:// superuser .com/q/17678 詳細情報.
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"
Nohup /usr/local/bin/ngrok --config /etc/ngrok.yml http 8080 &
Ngrokアカウントとリンクする場合、ngrokサイトでパブリックURLを表示できます。ローカルURLをカールする必要はありませんパブリックURL https://dashboard.ngrok.com/status
Nohup ./ngrok http 80&
Localhost:4040を押して、ngrokによって割り当てられたパブリックURLを取得します