Verwenden Sie netcat, um einem entfernten Mac mitzuteilen, dass er eine Datei ausführen / öffnen soll

1348
manaman

Ich habe sehr wenig (fast keine) Kenntnisse darüber, wie Netcat funktioniert, außer dass ich einen Mac mini dazu gebracht habe, den Port 13370 [mit nc -l 13370] (für TCP-Befehle?) Anzuhören, und ich habe ein MacBook, das verbunden ist an den Mac mini mit [nc 192.168.1.xxx 13370], und was auch immer ich in Terminal auf dem MacBook eingebe, wird auf dem Mac mini-Terminal angezeigt (Echos?).

Ich möchte dem Mac Mini mitteilen können, dass er eine Datei (auch auf dem Mac Mini gespeichert) von einem anderen Gerät im selben LAN aus öffnen soll. Im Moment verwende ich also das MacBook, aber letztendlich möchte ich Befehle von einer von mir erstellten App für Heimautomation senden, um beispielsweise ein Video auf dem Mac mini abzuspielen, der mit einem Fernsehbildschirm verbunden ist. Oder einen anderen Befehl, den Sie normalerweise in Terminal ausführen könnten. Meine App kann keine Verbindung zum Mac mini über SSH herstellen. Deshalb versuche ich es auf diese Weise.

Welchen Befehl muss ich zum Öffnen der Datei senden? Gibt es ein Format, das ich verwenden sollte? Für jede Hilfe dankbar.

0
Sie können Ihre Frage jederzeit bearbeiten. GabrielaGarcia vor 5 Jahren 2
Danke, bearbeitet manaman vor 5 Jahren 0
Aus welchem ​​Grund können Sie SSH nicht verwenden? Wollen Sie damit sagen, dass Sie auf einem der Computer keinen Zugriff auf SSH haben, oder sagen Sie, dass Ihre Anwendung nur Verbindungen über einen Port senden kann? DKing vor 5 Jahren 0
Die Anwendung kann keine Verbindung mit SSH herstellen. Vom Softwarehersteller wurde mir empfohlen, netcat / telnet usw. zu verwenden. Ja, ich denke, es kann nur über einen Port kommunizieren manaman vor 5 Jahren 0
@manaman Ich habe ein Skript, das netcat verwendet, um [genau dies] (https://github.com/rahuldottech/ncRemRun) auszuführen, aber es ist im Stapel für Windows geschrieben. Es sollte nicht länger als ein paar Minuten dauern, um es zu portieren. rahuldottech vor 5 Jahren 0
Entwickeln Sie diese Anwendung so, wie es Ihre Frage sagt, oder ist ein Hersteller beteiligt, wie Ihr Kommentar sagt? Ich bin etwas verwirrt, warum Sie es so einrichten bertieb vor 5 Jahren 0
@bertieb Ich verwende eine Software namens DemoPad, die die Kompilierung der App ausführt, sobald ich alle Befehle und Geräte im Smart Home-Projekt im Desktop-Programm eingestellt habe, in dem das Projekt erstellt wird. Ich bin also an die Protokolle gebunden, die DemoPad zulässt. manaman vor 5 Jahren 0

3 Antworten auf die Frage

0
DKing

Das netcatTool ist einfach ein Netzwerkverbindungstool. Es kann jeden Port abhören und eine Verbindung zu jedem Port herstellen. Es kann diese Informationen ausgeben oder sogar Daten an diese weiterleiten. Es ist auch sehr nützlich. Leider hört es nur zu und sendet Informationen; Es führt selbst keine Befehle aus. Daher netcatist es nicht das Werkzeug für das, was Sie tun möchten. Gleiches gilt für Telnet.

Um Befehle auf einem Remote-Server auszuführen, benötigen Sie eine Software, die auf diesem Remote-Server ausgeführt wird und diese Befehle akzeptiert. Das für die Ausführung von Befehlen auf einem Remote-Server zu verwendende Werkzeug ist SSH. Der Abhörserver führt den SSHD-Dämon aus. Sie könnten die Mühe machen, einen anderen Weg zu finden, um sich in den Server zu hacken, aber da Sie bereits Zugriff auf dieses Gerät haben, wäre dies wirklich mehr Mühe, als es wert wäre, da SSH bereits existiert.

Sie sagen, dass Ihre Anwendung keine Verbindung zu SSH herstellen kann. Wenn sie jedoch Zugriff darauf hat netcat, würde ich empfehlen, den Zugriff auf SSH zu verwenden, um Zugriff auf SSH zu erhalten, und Ihre Befehle von dort aus ausführen.

Wenn Sie eine Verbindung mit netcateinem Port abhören und die einzige Möglichkeit, mit der Ihre Anwendung eine Verbindung zu diesem Port herstellen kann, ist die Erstellung einer Art API oder Software, die Sie benötigen kann Anforderungen über einen Port verarbeiten und damit Befehle auf dem Terminal über SSH ausführen. Ich habe diesen Artikel mit einigen Vorschlägen dazu in BASH gefunden:

https://unix.stackexchange.com/questions/314550/how-to-set-a-script-to-execute-when-a-port-receives-a-message

Sobald Sie die Anforderung in ein Shellskript erhalten, können Sie das Skript entweder direkt ausführen lassen oder zusätzliche Skripts schreiben, die von der Abhörsoftware ausgelöst werden. Ich würde diese Software auf dem Client und nicht auf dem Remote-Server hören und Sie könnten über localhost (127.0.0.1) darauf zugreifen. Denken Sie auch daran, einen SSH-Schlüssel hinzuzufügen, damit für die Verbindung zum Remote-Server keine Kennwörter erforderlich sind. Dieser Artikel kann dabei helfen:

https://docs.joyent.com/public-cloud/getting-started/ssh-keys/generating-an-ssh-key-manually/manually-generating-your-ssh-key-in-mac-os-x

0
rahuldottech

Sie können auf MacOS (auf Computer 1) eine Reverse-Shell wie folgt erstellen:

bash -i >& /dev/tcp/ip-address-of-computer-2/1337 0>&1 

Verbinden Sie sich dann von einem anderen Computer (Computer 2) mit einem dieser netcat-Befehle (abhängig von der Implementierung):

nc -l -p 1337 

oder

nc -l 1337 

Jetzt können Sie auf Computer 2 Bash-Befehle eingeben, die dann auf dem Computer ausgeführt werden, auf dem die Remote-Shell ausgeführt wird (Computer 1).

Computer 1 sagt immer wieder "Verbindung abgelehnt", wenn ich bash -i> & / dev / tcp / ip-address-of-computer-2/1337 0> & 1 eingebe. Computer 2 IP-Adresse ist statisch und ist auch ein Mac ... manaman vor 5 Jahren 0
@manaman überprüfe deine Firewall, öffne Port 1337 rahuldottech vor 5 Jahren 0
@manaman, versuchen Sie auch, die Befehle für Computer 2 auszuführen, bevor Sie die Befehle für Computer 1 ausführen rahuldottech vor 5 Jahren 0
0
manaman

Vielen Dank an alle für Ihre Hilfe, Ihre Hilfe hat nach langem Ausprobieren zu mir beigetragen, um schließlich einen Weg zu finden, was ich wollte. Ich entschied mich am Ende nicht zu versuchen, eine Verbindung mit dem Mac selbst über Telnet herzustellen, sondern eher mit der VLC-App, die über einen eigenen Telnet-Server an Port 4212 verfügt. Ich habe beim Versuch, eine Telnet-Verbindung mit dem Mac herzustellen, immer 'abgelehnt', aber VLC an Port 4212 verbindet sich einwandfrei, solange in VLC ein Passwort festgelegt ist.

Die Steuerung von VLC war die Hauptsache, die ich wollte, deshalb bin ich damit zufrieden. Meine App kann Befehle auch auf dieselbe Weise wie der Mac-Client über das Terminal senden. Alles in allem also gut. Danke nochmal an alle!