Я пытаюсь настроить обратный 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 к устройству. Однако это не работает по двум причинам:
- Для интерактивного пользовательского интерфейса ввод по существу буферизован до тех пор, пока я не нажму return.
- Весь мой вклад возвращается ко мне. В реальной жизни устройство должно повторять вводимые мной символы.
Как правильно это сделать?
Ответы:
Самый простой способ:
telnet
(или скорееssh
) на ваш Macscreen /dev/cu.USBserial
командуТеперь, если вы не хотите подключаться к своему компьютеру Mac напрямую через com-порт или разрешать другим делать это и ничего больше, вот способ:
Создайте скрипт подключения для этого пользователя. Создайте файл с именем
/Users/comport/log2com.sh
и вставьте в него следующие строки:Разрешите выполнение сценария, выполнив эту команду в вашем терминале:
Наконец, установите этот скрипт как оболочку входа вашего пользователя. Для этого в Системных настройках> Пользователи и группы в списке пользователей щелкните правой кнопкой мыши пользователя и выберите «Дополнительные параметры». Затем в поле «shell» введите
/Users/comport/log2com.sh
и нажмите OK.Вот и все. Теперь вы можете использовать telnet (я бы порекомендовал
ssh
!) Войти в систему на вашем Mac, чтобы попасть прямо на экран.Обратите внимание, что для выхода вам нужно сделать это способом экрана (обычно Ctrl+ A, затем
:quit
Return).Протестировано это на OSX 10.10.5. Дайте мне знать, если это сработало для вас.
источник
-R
опцию в ответ. 3) Я не эксперт по экрану, но я не смог открыть оболочку. <kbd> Ctrl </ kbd> + <kbd> A </ kbd> затем <kbd> c </ kbd> не может открыть новый экран, так как у этого имени входа нет оболочки.nc
подхода вы можете найти решение в этом посте . Кроме того, вы можете взглянуть на GNUnetcat
, доступный в Brew , и на использованиеexpect
. Удачи и дайте нам знать, если вам удастся заставить его работать, ваш путь. ;)Я нашел решение. Пакет Python PySerial имеет класс rfc2217. У них есть пример приложения, которое работает как сервер telnet:
https://pyserial.readthedocs.org/en/latest/examples.html
открывает порт 2217, который позволяет Telnet для подключения. Это именно то, что я хотел.
источник