Просмотр случайного URL-адреса ngrok при работе в фоновом режиме

Когда я запускаю клиент ngrok с ./ngrok tcp 22, он запускается на переднем плане, и я могу видеть URL-адрес отправителя, созданный randoming, например tcp://0.tcp.ngrok.io:12345 -> localhost:22.

Если я запустил в нем фон с ./ngrok tcp &, я не могу найти способ увидеть URL-адрес пересылки. Как запустить ngrok в фоновом режиме и посмотреть URL-адрес?

Ответы

Ответ 1

Есть несколько способов.

Вы можете либо:

1) Посетите localhost:4040/status в своем браузере, чтобы увидеть кучу информации, или

2) Используйте curl, чтобы поразить API: localhost:4040/api/tunnels

Ответ 2

Этот маленький Python (2.7) script вызовет API ngrok и распечатает текущий URL:

import json
import os 

os.system("curl  http://localhost:4040/api/tunnels > tunnels.json")

with open('tunnels.json') as data_file:    
    datajson = json.load(data_file)


msg = "ngrok URL's: \n'
for i in datajson['tunnels']:
  msg = msg + i['public_url'] +'\n'

print (msg)

Ответ 3

Если это помогает любому, кто написал быстрый script, чтобы извлечь сгенерированный случайный URL-адрес в Node:

Это делает предположение, что вас интересует только защищенный URL.

const fetch = require('node-fetch')
fetch('http://localhost:4040/api/tunnels')
  .then(res => res.json())
  .then(json => json.tunnels.find(tunnel => tunnel.proto === 'https'))
  .then(secureTunnel => console.log(secureTunnel.public_url))
  .catch(err => {
    if (err.code === 'ECONNREFUSED') {
      return console.error("Looks like you're not running ngrok.")
    }
    console.error(err)
  })

Если вы хотите все туннели:

const fetch = require('node-fetch')
fetch('http://localhost:4040/api/tunnels')
  .then(res => res.json())
  .then(json => json.tunnels.map(tunnel => tunnel.public_url))
  .then(publicUrls => publicUrls.forEach(url => console.log(url)))
  .catch(err => {
    if (err.code === 'ECONNREFUSED') {
      return console.error(
        "Looks like you're not running ngrok."
      )
    }
    console.error(err)
  })

Ответ 4

import json
import requests


def get_ngrok_url():
    url = "http://localhost:4040/api/tunnels/"
    res = requests.get(url)
    res_unicode = res.content.decode("utf-8")
    res_json = json.loads(res_unicode)
    for i in res_json["tunnels"]:
        if i['name'] == 'command_line':
            return i['public_url']
            break

Это редактирование JUN_NETWORKS Python 3 кода. Выводит только HTTPS URL. Я считаю, что Ngrok случайным образом изменит порядок, в котором сначала отображается URL, иногда с выводом HTTP. Дополнительный цикл будет последовательно искать "туннель" с именем "command_line", который является HTTPS URL.

Ответ 5

Запустить./ngrok http и запустить туннель ngrok в качестве фонового процесса. Ngrok обычно открывает окно с указанием назначенного URL-адреса, но поскольку мы используем команду nohup, это не видно.

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

Ответ 6

В Python3

import json
import requests


def get_ngrok_url():
    url = "http://localhost:4040/api/tunnels"
    res = requests.get(url)
    res_unicode = res.content.decode("utf-8")
    res_json = json.loads(res_unicode)
    return res_json["tunnels"][0]["public_url"]

У этого возвращенного json есть 2 URL для http и https. Если вам нужен только https URL, вы можете использовать res_json["tunnels"][index num]["proto"]

Ответ 7

В рубине

require 'httparty'

# get ngrok public url
begin
  response = HTTParty.get 'http://localhost:4040/api/tunnels'
  json = JSON.parse response.body
  new_sms_url = json['tunnels'].first['public_url']
rescue Errno::ECONNREFUSED
  print 'no ngrok instance found. shutting down'
  exit
end

Ответ 8

Есть лучший способ сделать это, просто войдите в свою учетную запись на ngrok.com. Ваш URL будет в вашей панели.

Ответ 9

Если вы хотите получить первый туннель, то jq станет вашим другом:

curl -s localhost:4040/api/tunnels | jq -r .tunnels[0].public_url

При запуске более одного экземпляра ngrok используйте имя туннеля /api/tunnels/:name.

Ответ 10

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

*** Выше ответы являются решениями для просмотра/проверки URL-адреса перенаправления. Однако для запуска ngrok в фоновом режиме вы можете попробовать использовать экран в Linux. Если вам нужна помощь здесь, ссылка

Шаги: 1. Просто запустите ngrok на экране, а затем отсоедините. 2. Используйте python script, указанный Джерардом выше, чтобы увидеть URL.

Я следил за тем же процессом, и он работает!