Accès à l'appareil sur le réseau local via le webhook hébergé sur le serveur

Susmit Agrawal

J'ai un script python qui agit comme un webhook. Une partie est la suivante :

import json
import os
import urllib
import socket
import _thread
from flask import Flask
from flask import request
from flask import make_response
app=Flask(__name__)

ip = ('192.168.1.75', 9050)

@app.route('/webhook',methods=['GET','POST'])
    def webhook():
        _thread.start_new_thread(sendDataToDevice,(ip))
        req = request.get_json(silent=True,force=True)
        print("Request:")
        print(json.dumps(req,indent=4))
        res=makeWebHookResult(req)
        res=json.dumps(res,indent=4)
        r=make_response(res)
        r.headers['Content-Type']='application/json'
        return r

if __name__ == '__main__':
    app.run(port=8080,host='localhost')

La fonction du script est d'envoyer des données à un appareil connecté au réseau local. Cela fonctionne parfaitement lorsque j'ouvre mon navigateur Web et que je tape ce qui suit dans la barre d'URL :

http://localhost:8080/webhook

Je veux héberger le script sur un serveur, par exemple. Heroku. Comment puis-je accéder au périphérique local dans ce cas ?

Remarque : je sais que je peux exécuter le script sur ma machine locale et le rendre visible sur Internet à l'aide de ngrok, mais je souhaite le garder accessible même lorsque mon ordinateur est éteint. Aussi, voulez un lien fixe, et les liens donnés par ngrok changent à chaque exécution.

nitruré

J'ai déjà rencontré un problème similaire avec l'IoT. Malheureusement, il n'existe pas de moyen simple de rendre un appareil visible en ligne. Voici une solution simple que j'ai utilisée. Ce n'est peut-être pas le meilleur, mais ça marche.

DDNS + Redirection de port + IP statique

Si vous avez accès à votre routeur WiFi local, vous pouvez configurer quelque chose appelé DDNS (Dynamic Domain Name System). Votre routeur se connectera alors à un fournisseur de service DDNS comme no-ip (www.noip.com) et il sera visible sur internet. Vous pouvez donner une URL personnalisée comme susmit-home.noip.com.

Cependant, susmit-home.noip.comil ne désignera désormais que votre routeur WiFi et non votre réseau WiFi. Donc, si vous souhaitez accéder au local device_ipet device_porttel que "192.168.1.75", 9050. Vous pouvez alors configurer la redirection de port sur votre routeur pour cette combinaison de port IP local. Habituellement, la configuration ressemble à ceci :

  • IP locale : device_ip(par exemple 192.168.1.75)
  • Port local : device_port(par exemple 9050)
  • Port sortant : any_port(par exemple 9050)

Assurez-vous que votre device_ipadresse IP est statique sur votre routeur WiFi afin qu'elle ne change pas.

Enfin, dans votre code, vous pouvez simplement remplacer la ligne ip = ('192.168.1.75', 9050)par ip = ('susmit-home.noip.com', 9050).

Autres solutions :

  1. Une solution un peu plus compliquée consiste à configurer un VPN, de sorte que votre réseau local et votre serveur distant (par exemple Heroku) soient tous disponibles l'un pour l'autre comme s'ils se trouvaient dans le même réseau local.
  2. Si votre appareil est un ordinateur ou un Raspberry Pi, vous pouvez utiliser la redirection de port distant SSH pour accéder à votre appareil local à partir du serveur distant.

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

Accéder au sous-domaine sur le serveur nginx via le réseau local

accéder à l'imprimante des clients sur le réseau local à partir d'un serveur local

Serveur d'accès sur Raspberry Pi sur le réseau local

Accédez à vhost via l'adresse IP sur le réseau local

Comment connecter une application Android exécutée sur un appareil connecté via ADB pour accéder à l'API REST sur le serveur local ?

Connectez l'appareil sur le réseau local à l'API Web ASP.NET Core

Comment visiter le site hébergé sur localhost depuis un appareil Android dans le même réseau?

Le site Web ne s'affiche pas sur le réseau local mais s'affiche sur l'ordinateur hôte

Exécution du serveur Bokeh sur le réseau local

Rechercher un serveur spécifique sur le réseau local

Connexion au serveur personnel Perforce sur le réseau local

Autoriser le serveur distant à accéder au serveur d'API sur l'hôte local

Recherche automatique du serveur sur le réseau local à partir de l'application Android

Laravel JWT: les jetons générés sur l'hôte local sont valides sur le serveur

Le client et le serveur ne se connectent pas sur le réseau local

Comment accéder aux fichiers hébergés sur le Web via python ?

.htaccess bloque l'accès extérieur sur le serveur local à l'exception de certaines URL

Le chargement a échoué pour les fichiers VTK hébergés sur le serveur

Accéder à kibana sur le réseau local

Accéder à l'hôte local depuis une autre machine sur le réseau dans les rails 4.2

L'utilisation de Google Cloud Storage rencontre l'erreur 500 sur le site Web hébergé sur le serveur amazon

Hébergement HTTPS sur le réseau local

activation de l'accès à Subversion via le serveur Web Apache et DAV sur Ubuntu

Fichiers HTML coupés après l'avoir hébergé sur le serveur localhost avec Node.js

Site disponible sur le réseau local après modification de l'URL de l'hôte

retourne le chemin d'une image hébergée sur mon serveur pour l'afficher sur le front-end

Comment Android Emulator peut-il atteindre le serveur sur le réseau local?

Autoriser l'accès interdomaine sur le serveur Rails

ionic / angularjs avec django csrf fonctionne sur le serveur local mais ne fonctionne pas sur l'appareil

TOP liste

  1. 1

    Microsoft.WebApplication.targets

  2. 2

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  3. 3

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  4. 4

    Comment ajouter une entrée à une table de base de données pour une combinaison de deux tables

  5. 5

    Passer la taille d'un tableau 2D à une fonction ?

  6. 6

    Exporter la table de l'arborescence vers CSV avec mise en forme

  7. 7

    Impossible d'accéder à la vue personnalisée pendant le test de l'interface utilisateur dans XCode

  8. 8

    Créer un système Buzzer à l'aide de python

  9. 9

    Comment changer le navigateur par défaut en Microsoft Edge pour Jupyter Notebook sous Windows 10 ?

  10. 10

    impossible d'obtenir l'image d'arrière-plan en plein écran dans reactjs

  11. 11

    Algorithme: diviser de manière optimale une chaîne en 3 sous-chaînes

  12. 12

    CSS: before ne fonctionne pas sur certains éléments,: after fonctionne très bien

  13. 13

    Conversion double en BigDecimal en Java

  14. 14

    Comment obtenir l'intégration contextuelle d'une phrase dans une phrase à l'aide de BERT ?

  15. 15

    Comment choisir le nombre de fragments et de répliques Elasticsearch

  16. 16

    Comment vérifier si un utilisateur spécifique a un rôle? Discord js

  17. 17

    Comment créer un bot à compte à rebours dans Discord en utilisant Python

  18. 18

    Existe-t-il un moyen de voir si mon bot est hors ligne ?

  19. 19

    comment afficher un bouton au-dessus d'un autre élément ?

  20. 20

    Comment activer le message Pylint "too-many-locals" dans VS Code?

  21. 21

    Je continue à obtenir l'objet 'WSGIRequest' n'a pas d'attribut 'Get' sur django

chaudétiquette

Archive