2016-04-25 11 views
0

Ich habe einen Server und mehrere Clients. Der Server möchte Shell-Skript auf jedem Gerät ausführen, das es möchte. Absolut ist es nicht möglich über einen einfachen Socket, weil wir Tausende von Geräten haben können. Auch Server und Geräte sollten immer über Socket verbunden sein. Nach langer Suche fand ich heraus, dass die Lösung NAT-T sein könnte. Aber ich weiß immer noch nicht, wie ich das benutzen soll oder ob es eine andere Lösung gibt. Bitte helfen Sie mir, was ich auf Clients und Server tun soll.Run Shell-Skript auf dem Client remotly von Server

+0

So verwenden ssh auf jedem Gerät? Dafür gibt es nodejs-Bibliotheken. Wenn Sie einen Socket geöffnet haben (es ist unklar, ob Sie haben oder wenn Sie nicht haben), können Sie etwas ähnliches wie die Child-Prozess-Kommunikation verwenden? Warum würdest du NAT benutzen? Das klingt mehr wie ein Netzwerk-Layer-Problem außerhalb des Knotens. Können oder können Sie die Geräte nicht vom Server erreichen oder können nur die Geräte den Server erreichen? – CFrei

+0

Also, was ist die Adresse und der Port des Clients? auch die Adresse der Kunden kann sich ändern. Das Problem ist, wie ich die Clients über Server erreichen kann. – Beaumind

Antwort

0

Wenn Sie die Adresse und den Port des Clients nicht im Voraus kennen, müssen Sie eine Verbindung zum Server mit den Clients herstellen. Tausende von Geräten sind kein Problem. Sie laufen in einem Socket-Limit um 65000 offene Ports (überprüfen Sie ulimit). Erstellen Sie einen Objektstrom zwischen Client und Server und führen Sie das Skript basierend auf dem Objekt aus, das der Client empfängt. Sie könnten auch ein Intervall auf den Clients setzen und sie alle n Sekunden mit einfachen http (s) prüfen lassen, wenn etwas für sie zu tun ist?

Siehe zum Beispiel hier: Node Stream Docs Oder hier: Node HTTP Docs

+0

Was ist, wenn die Anzahl der Clients 65000 überschreitet? – Beaumind

+0

Sie benötigen einen anderen Ansatz - zum Beispiel die http. Aber wenn Sie mehr als 65000 Clients haben, benötigen Sie möglicherweise eine echte Architektur. Sehen Sie sich einige IoT-Architektur-Ansätze an, zum Beispiel von Amazon oder anderen ... – CFrei

+0

Ich denke, Localtunnel wird das Problem lösen :) – Beaumind