Как настроить обратный Telnet на Mac OS X

Как настроить обратный Telnet на Mac OS X

Я пытаюсь настроить обратный Telnet (Telnet to COM) на Mac OS X 10.9.5 (Mavericks). Mac подключен к последовательному устройству. У меня нет проблем с доступом к последовательному устройству с Mac с помощью screen:

screen /dev/cu.USBserial

Однако я хотел бы получить удаленный доступ к устройству через Telnet.

Я пробовал использовать Netcat ( nc) и имел ограниченный успех. Команда, которую я использовал, была:

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

И тогда я могу подключиться к устройству через Telnet. Однако это не работает по двум причинам:

  1. Для интерактивного пользовательского интерфейса ввод по сути буферизуется строками до тех пор, пока я не нажму return.
  2. Все мои вводы возвращаются ко мне. В реальной жизни устройство должно отражать мои вводимые символы.

Как правильно это сделать?

решение1

Самый простой способ:

  1. telnet(или скорее ssh) на ваш Mac
  2. введите screen /dev/cu.USBserialкоманду

Теперь, если вы не хотите подключаться к своему Mac напрямую через COM-порт или разрешить другим делать это и ничего больше, вот способ:

  1. Создайте выделенного пользователя на вашем Mac. Давайте назовем его "comport" и войдите в систему как этот пользователь.
  2. Создайте скрипт подключения для этого пользователя. Создайте файл с именем /Users/comport/log2com.shи вставьте в него эти строки:

    #!/bin/bash
    /usr/bin/screen -R /dev/cu.USBserial
    
  3. Разрешите выполнение скрипта, выполнив следующую команду в терминале:

    chmod +x /Users/comport/log2com.sh
    
  4. Наконец, установите этот скрипт как оболочку входа вашего пользователя. Для этого в Системных настройках > Пользователи и группы, в списке пользователей щелкните правой кнопкой мыши по пользователю и выберите "Дополнительные параметры". Затем в поле "оболочка" введите /Users/comport/log2com.shи нажмите OK.

Вот и все. Теперь вы можете подключиться по telnet (я бы даже рекомендовал ssh!) к этому логину на вашем Mac, чтобы попасть прямо на экран.

Обратите внимание, что для выхода вам нужно сделать это экранным способом (обычно Ctrl+ A, затем :quit Return).

Протестировано на OSX 10.10.5. Дайте знать, если сработало.

решение2

Я нашел решение. В пакете Python PySerial есть класс rfc2217. У них есть пример приложения, которое работает как сервер telnet:

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

$ python rfc2217_server.py /dev/tty.serial

открывает порт 2217, который позволяет подключаться через telnet. Это именно то, что я хотел.

Связанный контент