7

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

screen /dev/cu.USBserial

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

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

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

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

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

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

2 ответа2

4

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

  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. Наконец, установите этот скрипт как оболочку входа вашего пользователя. Для этого в Системных настройках> Пользователи и группы в списке пользователей щелкните правой кнопкой мыши пользователя и выберите "Дополнительные параметры". Затем в поле "shell" введите /Users/comport/log2com.sh и нажмите OK.

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

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

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

1

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

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

$ python rfc2217_server.py /dev/tty.serial

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .