Mac OS X 10.9.5(Mavericks)에서 역방향 Telnet(Telnet to COM)을 설정하려고 합니다. Mac이 직렬 장치에 연결되어 있습니다. 화면을 사용하여 Mac에서 직렬 장치에 액세스하는 데 문제가 없습니다.
screen /dev/cu.USBserial
하지만 Telnet을 통해 원격으로 장치에 액세스하고 싶습니다.
Netcat( )을 사용해 보았지만 nc
성공이 제한적이었습니다. 내가 사용한 명령은 다음과 같습니다.
nc -l 9999 > /dev/cu.USBserial < /dev/cu.USBserial
그런 다음 장치에 Telnet을 연결할 수 있습니다. 그러나 다음 두 가지 이유로 작동하지 않습니다.
- 대화형 사용자 인터페이스의 경우 입력은 기본적으로 를 칠 때까지 라인 버퍼링됩니다 return.
- 내가 입력한 내용은 모두 나에게 다시 반영됩니다. 실제 생활에서 장치는 내가 입력한 문자를 반영하는 장치여야 합니다.
올바른 방법은 무엇입니까?
답변1
가장 간단한 방법:
telnet
(또는 오히려ssh
) Mac에screen /dev/cu.USBserial
명령을 입력하세요
이제 Mac을 COM 포트에 직접 연결하고 싶지 않거나 다른 사람이 연결하도록 허용하고 싶지 않다면 다음 방법을 따르세요.
- Mac에서 전용 사용자를 만듭니다. 이를 "comport"라고 부르고 이 사용자로 로그인해 보겠습니다.
이 사용자에 대한 연결 스크립트를 만듭니다. 이름이 지정된 파일을 만들고
/Users/comport/log2com.sh
다음 줄을 삽입합니다.#!/bin/bash /usr/bin/screen -R /dev/cu.USBserial
터미널에서 다음 명령을 실행하여 스크립트가 실행되도록 허용합니다.
chmod +x /Users/comport/log2com.sh
마지막으로 이 스크립트를 사용자의 로그인 셸로 설정합니다. 이를 위해 시스템 환경설정 > 사용자 및 그룹의 사용자 목록에서 해당 사용자를 마우스 오른쪽 버튼으로 클릭하고 "고급 옵션"을 선택하세요. 그런 다음 "쉘" 필드에 를 입력하고
/Users/comport/log2com.sh
확인을 클릭합니다.
그게 다야. 이제 ssh
Mac에서 이 로그인에 텔넷(권장하고 싶습니다!)을 통해 화면에 직접 접속할 수 있습니다.
종료하려면 화면 방식(보통 Ctrl+ A, 그 다음 :quit
Return)을 수행해야 합니다.
OSX 10.10.5에서 테스트했습니다. 그것이 당신에게 도움이 되었는지 알려주세요.
답변2
해결책을 찾았습니다. Python PySerial 패키지에는 rfc2217 클래스가 있습니다. 텔넷 서버로 작동하는 샘플 앱이 있습니다.
https://pyserial.readthedocs.org/en/latest/examples.html
$ python rfc2217_server.py /dev/tty.serial
텔넷 연결을 허용하는 포트 2217을 엽니다. 그것은 바로 내가 원했던 것이다.