Ответ 1
как описано здесь
ngrok -log=stdout 80 > /dev/null &
Я попробовал запустить 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 &
Далее вы можете использовать завиток и, например, jq
процессор JSON с командной строкой.
export WEBHOOK_URL="$(curl http://localhost:4040/api/tunnels | jq ".tunnels[0].public_url")"
ваш URL-адрес будет доступен из переменной $WEBHOOK_URL env, и вы можете использовать его в любом месте.
Посетите http://localhost:4040/status на вашем локальном компьютере или посмотрите здесь: Просмотр произвольного URL-адреса ngrok при запуске в фоновом режиме.
В Ngrok 2, -log не является ни необходимым, ни доступным (хотя вы можете контролировать уровни журналов в файле конфигурации). ngrok > /dev/null &
достаточно.
Если вы хотите использовать несколько окон оболочки или запускать любую службу в фоновом режиме из одного сеанса SSH, самый простой способ - использовать screen.
Для установки в 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, чтобы увидеть URL, назначенный ngrok
Используйте ниже script для ngrok2
nohup ngrok http 3000 &
Это приведет к записи журналов в файл nohup.out
curl http://127.0.0.1:4040/api/tunnels
и вы увидите информацию public_url.
Вот пример. https://i.stack.imgur.com/V0905.png
попробуй запустить как сервис. и проверить это с сайта 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
nohup./ngrok http 80 &
Нажмите localhost: 4040, чтобы получить публичный URL, назначенный ngrok
Вот небольшой скрипт, написанный мной, который запускает 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"
Вы можете использовать экран для этого. Вот пример того, как я его использую:
экран -d -m ~/./ngrok http test.cc:8080
nohup /usr/local/bin/ngrok --config /etc/ngrok.yml http 8080 &
Если вы связываетесь с учетной записью ngrok, то вы можете просмотреть общедоступный URL на сайте ngrok, не нужно скручивать локальный URL. Общедоступный URL https://dashboard.ngrok.com/status