텔넷 세션에 자동으로 연결하기 위해 예상 파일을 사용하고 싶습니다. 프로세스는 다음과 같습니다.
- 특정 IP와 포트에 연결하면 다음과 같이 표시됩니다.
escape character is ]
- 그 후에 우리는 Ctrl+D
\x04
Ctrl+ 를 보내는 Expect 파일 을 작성했습니다 D. 파일을 실행하면 연결은 잘 되는데 Ctrl키보드에서 +를 달라고 하네요 . 하지만 스크립트 자체에서 D자동으로 +를 입력하고 싶습니다 . 어떤 작업도 수동으로 수행해서는 안 됩니다.CtrlD
방법을 설명해 주실 수 있나요?
답변1
예상 쉘을 사용하지 않고도 텔넷을 자동으로 종료할 수 있습니다.
sleep <n> | telnet <server> <port>
N- 자동으로 종료되기 전에 대기하는 시간(초)입니다. 0.5와 같은 소수일 수 있습니다. 일부 필수 출력은 지정된 대기 시간 내에 반환되지 않을 수 있습니다. 따라서 그에 따라 증가해야 할 수도 있습니다.
섬기는 사람- 대상 서버 IP 또는 호스트 이름.
포트- 대상 서비스 포트 번호.
다음과 같이 출력을 파일로 리디렉션할 수도 있습니다.
sleep 1 | telnet <server> <port> > output.log
답변2
이스케이프 문자를 보다 쉽게 보낼 수 있는 문자로 변경하는 것이 좋습니다 expect
. 예를 들어 느낌표를 보내지 않는다는 것을 알고 있다면 느낌표를 이스케이프 문자로 사용하세요.
$ telnet -e ! 10.1.2.3 80
Telnet escape character is '!'.
Trying 10.1.2.3...
Connected to 10.1.2.3.
Escape character is '!'.
GET!
telnet> quit
Connection closed.
답변3
ctrl+ V, ctrl+를 입력하여 D원하는 스크립트에서 리터럴 바이트 시퀀스를 가져올 수 있습니다. 예상대로 ctrl+를 대화식으로 입력한 것처럼 이 메시지가 전송됩니다 D.