2015-12-16 20 views
16

Quando avvio un client ngrok con ./ngrok tcp 22 viene eseguito in primo piano e posso vedere l'URL di inoltro generato randoming, ad esempio tcp://0.tcp.ngrok.io:12345 -> localhost:22.Visualizza casuale URL ngrok quando viene eseguito in background

Se eseguo lo sfondo con ./ngrok tcp &, non riesco a trovare alcun modo per visualizzare l'URL di inoltro. Come posso eseguire ngrok in background e vedere ancora l'URL?

risposta

20

Ci sono un paio di modi.

è possibile:

A) Visita localhost:4040/status di vedere un mucchio di informazioni

2) Usare curl per colpire l'API: localhost:4040/api/tunnels

7

Questo piccolo Python (2.7) lo script chiamerà il ngrok API e stampare l'attuale 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) 
+0

come posso farlo con python3 con urllib.urlopen solo? Non voglio 1. chiamare il comando esterno curl, 2. reindirizzare a un file..Grazie – f126ck

-1

Può essere che sono un po 'troppo tardi per rispondere, ma sarei felice se è utile fo chiunque visiti la domanda

*** Le risposte sopra sono soluzioni per vedere/controllare l'URL di reindirizzamento. Tuttavia, per eseguire ngrok in background, puoi provare a usare screen in linux. In caso di bisogno di aiuto qui un rapido reference

Passi: 1. Basta eseguire il ngrok nello schermo e quindi staccare. 2. Utilizzare lo script python fornito da Gerard in alto per vedere l'URL.

Ho seguito lo stesso processo e funziona!

1

Se aiuta chiunque ho scritto un breve script per estrarre l'url casuale generato nel nodo:

Rende presupposto siete interessati solo l'url sicuro.

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) 
    }) 

Se si voleva tutte le gallerie:

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) 
    }) 
0

Run ./ngrok http & Questo esegue il tunnel ngrok come processo in background. Normalmente Ngrok apre una finestra che mostra l'URL assegnato ma dal momento che stiamo usando il comando nohup questo non è visibile.

Così, quindi eseguire ricciolo http://127.0.0.1:4040/api/tunnels troppo vedere l'URL assegnato dal ngrok

Problemi correlati