So richten Sie ein Reverse-Telnet unter Mac OS X ein

So richten Sie ein Reverse-Telnet unter Mac OS X ein

Ich versuche, ein Reverse-Telnet (Telnet zu COM) unter Mac OS X 10.9.5 (Mavericks) einzurichten. Der Mac ist mit einem seriellen Gerät verbunden. Ich habe kein Problem damit, vom Mac aus über den Bildschirm auf das serielle Gerät zuzugreifen:

screen /dev/cu.USBserial

Ich möchte jedoch per Fernzugriff über Telnet auf das Gerät zugreifen.

Ich habe versucht, Netcat ( nc) zu verwenden, und hatte nur begrenzten Erfolg. Der von mir verwendete Befehl lautet:

nc -l 9999 > /dev/cu.USBserial < /dev/cu.USBserial

Und dann kann ich per Telnet auf das Gerät zugreifen. Allerdings funktioniert das aus zwei Gründen nicht:

  1. Bei einer interaktiven Benutzeroberfläche wird die Eingabe im Wesentlichen zeilenweise gepuffert, bis ich drücke return.
  2. Alle meine Eingaben werden an mich zurückgesendet. Im wirklichen Leben sollte das Gerät dasjenige sein, das meine Eingabezeichen wiedergibt.

Wie geht man richtig vor?

Antwort1

Die einfachste Methode:

  1. telnet(oder besser gesagt ssh) auf Ihren Mac
  2. Geben Sie Ihren screen /dev/cu.USBserialBefehl ein

Wenn Sie Ihren Mac nun direkt über den COM-Port verbinden möchten oder nur dies anderen erlauben möchten, haben Sie folgende Möglichkeit:

  1. Erstellen Sie einen dedizierten Benutzer auf Ihrem Mac. Nennen wir ihn „comport“ und melden Sie sich als dieser Benutzer an.
  2. Erstellen Sie ein Verbindungsskript für diesen Benutzer. Erstellen Sie eine Datei mit dem Namen /Users/comport/log2com.shund fügen Sie diese Zeilen darin ein:

    #!/bin/bash
    /usr/bin/screen -R /dev/cu.USBserial
    
  3. Erlauben Sie die Ausführung des Skripts, indem Sie diesen Befehl in Ihrem Terminal ausführen:

    chmod +x /Users/comport/log2com.sh
    
  4. Legen Sie dieses Skript abschließend als Login-Shell Ihres Benutzers fest. Klicken Sie dazu in Systemeinstellungen > Benutzer und Gruppen in der Benutzerliste mit der rechten Maustaste auf den Benutzer und wählen Sie „Erweiterte Optionen“. Geben Sie dann in das Feld „Shell“ ein /Users/comport/log2com.shund klicken Sie auf „OK“.

Das ist alles. Sie können jetzt per Telnet (das würde ich eher empfehlen ssh!) auf Ihrem Mac auf diesen Login zugreifen, um direkt auf den Bildschirm zu gelangen.

Beachten Sie, dass Sie das Beenden über den Bildschirm durchführen müssen (normalerweise Ctrl+ A, dann :quit Return).

Habe dies unter OSX 10.10.5 getestet. Sagen Sie mir, ob es bei Ihnen funktioniert hat.

Antwort2

Ich habe eine Lösung gefunden. Das Python PySerial-Paket hat eine rfc2217-Klasse. Sie haben eine Beispiel-App, die als Telnet-Server funktioniert:

https://pyserial.readthedocs.org/en/latest/examples.html

$ python rfc2217_server.py /dev/tty.serial

öffnet einen Port 2217, der eine Telnet-Verbindung ermöglicht. Das ist genau das, was ich wollte.

verwandte Informationen