Ngrok работает в фоновом режиме

Я попробовал запустить ngrok в фоновом режиме с помощью

./ngrok -subdomain test -config=ngrok.cfg 80 &

выполняется процесс

[1] 3866

и субдомен не работает.

Он работает с

./ngrok -subdomain test -config=ngrok.cfg 80

Кто-нибудь из вас знает, что здесь происходит?

Ответ 1

как описано здесь

ngrok -log=stdout 80 > /dev/null &

Ответ 2

как описано выше, вы можете запустить ngrok в фоновом режиме с помощью

./ngrok http 8080 > /dev/null &

Далее вы можете использовать завиток и, например, jq процессор JSON с командной строкой.

export WEBHOOK_URL="$(curl http://localhost:4040/api/tunnels | jq ".tunnels[0].public_url")"

ваш URL-адрес будет доступен из переменной $WEBHOOK_URL env, и вы можете использовать его в любом месте.

Ответ 4

В Ngrok 2, -log не является ни необходимым, ни доступным (хотя вы можете контролировать уровни журналов в файле конфигурации). ngrok > /dev/null & достаточно.

Ответ 5

Если вы хотите использовать несколько окон оболочки или запускать любую службу в фоновом режиме из одного сеанса SSH, самый простой способ - использовать screen.

Для установки в Centos Linux используйте yum install screen

Затем запустите, как и любую другую команду screen, после этой команды ngrok в пределах параметров.

Отсоединение - самая мощная часть экрана. Экран позволяет вам отсоединиться от окна и снова подключиться позже.

Если ваше сетевое подключение терпит неудачу, экран автоматически отключит вашу сессию! Вы можете отсоединиться от окна, используя " Ctrl-a" " D".

Это вернет вас обратно в вашу оболочку.

Все окна экрана все еще существуют, и вы можете снова подключиться к ним, используя screen -r

Ответ 6

Запустите ./ngrok http 5000 > /dev/null &, затем curl localhost:4040/status, чтобы проверить url

Ответ 7

Запустите ./ngrok http (номер порта) & Это запускает туннель ngrok как фоновый процесс. Ngrok обычно открывает ветку, показывающую назначенный URL, но поскольку мы используем команду nohup, это не видно.

Таким образом, затем запустите curl http://127.0.0.1:4040/api/tunnels, чтобы увидеть URL, назначенный ngrok

Ответ 8

Используйте ниже script для ngrok2

nohup ngrok http 3000 &

Это приведет к записи журналов в файл nohup.out

Ответ 10

попробуй запустить как сервис. и проверить это с сайта ngrok. Я пробовал для ngrok версии 2.2.8 на Raspberry pi 3.

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

nohup./ngrok http 80 &

Нажмите localhost: 4040, чтобы получить публичный URL, назначенный ngrok

Ответ 12

Вот небольшой скрипт, написанный мной, который запускает ngrok в фоновом режиме. Затем он пытается установить переменную NGROK_PUBLIC_URL, вызывая команду curl (против http://127.0.0.1:4040/api/tunnels), а затем команду sed (которая извлекает общедоступный URL-адрес ngrok). Все это выполняется внутри цикла до тех пор, пока 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 ]"

Сценарий принимает порт в качестве необязательного аргумента командной строки, т.е.

$ . 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

Это может быть доступно/использовано в ваших приложениях.

Примечание: Этот скрипт должен быть получен (. 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"

Ответ 13

Вы можете использовать экран для этого. Вот пример того, как я его использую:

экран -d -m ~/./ngrok http test.cc:8080

Ответ 14

nohup /usr/local/bin/ngrok --config /etc/ngrok.yml http 8080 &

Если вы связываетесь с учетной записью ngrok, то вы можете просмотреть общедоступный URL на сайте ngrok, не нужно скручивать локальный URL. Общедоступный URL https://dashboard.ngrok.com/status