2015-12-16 1 views
16

Lorsque je démarre un client ngrok avec ./ngrok tcp 22, il s'exécute au premier plan et je peux voir l'URL de redirection générée, telle que tcp://0.tcp.ngrok.io:12345 -> localhost:22.Afficher l'URL ngrok aléatoire lors de l'exécution en arrière-plan

Si j'exécute l'arrière-plan avec ./ngrok tcp &, je ne trouve aucun moyen de voir l'URL de transfert. Comment puis-je lancer ngrok en arrière-plan et toujours voir l'URL?

Répondre

20

Il y a plusieurs façons.

Vous pouvez:

A) Visite localhost:4040/status pour voir un tas d'informations

2) CURL pour frapper l'API: localhost:4040/api/tunnels

7

Ce petit script Python (2.7) appellera la API ngrok et imprimer l'URL actuelle de:

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

comment puis-je faire avec python3 avec seulement urllib.urlopen? Je ne veux pas 1. appeler la commande externe curl, 2. rediriger vers un fichier .. Merci – f126ck

-1

Peut-être que je suis un peu trop tard pour répondre, mais serais heureux s'il est utile fo Toute personne visitant la question. *** Ci-dessus les réponses sont des solutions pour voir/vérifier l'URL de redirection. Cependant, pour lancer ngrok en arrière-plan, vous pouvez essayer d'utiliser screen dans Linux. Incase vous avez besoin d'aide ici un rapide reference

Étapes: 1. Il suffit de lancer le ngrok dans l'écran, puis détacher. 2. Utilisez le script python fourni par Gerard ci-dessus pour voir l'URL.

J'ai suivi le même processus et cela fonctionne!

1

Si elle aide tous ceux que j'écrit un script rapide pour extraire l'URL aléatoire généré dans le nœud:

Il fait hypothèse que vous êtes seulement intéressé par l'URL sécurisée.

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

Si vous vouliez tous les tunnels:

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 & Cela va du tunnel ngrok comme un processus d'arrière-plan. Ngrok ouvre généralement une fenêtre affichant l'URL assignée mais comme nous utilisons la commande nohup, elle n'est pas visible.

Ainsi, puis exécutez boucle http://127.0.0.1:4040/api/tunnels trop voir l'URL attribué par ngrok