netcat에서 이전 명령을 가져오려면 위쪽 화살표를 사용하세요.

netcat에서 이전 명령을 가져오려면 위쪽 화살표를 사용하세요.

저는 최근 서버를 테스트하기 위해 netcat을 많이 사용하고 있는데 위쪽 화살표를 사용하여 이전 명령을 반복하는 것이 매우 도움이 될 것입니다. 그러나 지금은 단지 ^[[A. 이 동작을 변경할 수 있는 방법이 있나요?

답변1

두 가지 가능성이 있습니다. 첫 번째는 사용하는 것입니다.되감기하나 포장독서선프로그램을 둘러싼 역사 도서관 netcat. 또 다른 하나는 사용하는 것입니다.소캇옵션으로 readline이 내장되어 있습니다.

예를 들어, Telnet에 netcat을 사용하고 있다면 다음과 같이 말할 수 있습니다.

rlwrap nc -t remotehost 23

입력한 각 줄은 파일에 저장되며 ~/.nc_history일반적인 읽기 줄 키를 사용하여 탐색할 수 있습니다. 동일한 명령을 다시 실행하면 기존 기록이 보존됩니다.

을(를 ) 사용할 때는 socat텔넷 옵션이 없지만 다른 연결 유형의 경우 다음을 수행할 수 있습니다.

socat readline,history=$HOME/.socat.hist TCP4:remotehost:port

그렇지 않은 경우 rlwrapsocat을 사용하여 netcat을 실행할 수 있습니다.

socat readline,history=$HOME/.socat.hist exec:'nc -t remotehost 23'

이러한 프로그램은 없지만 bashreadline이 내장된 쉘이 있는 경우 세 번째 가능성은 터미널에서 bash 읽기 명령을 사용하여 netcat의 표준 입력으로 보내는 것입니다. 다음은 동일한 nc명령을 사용하고 기록을 파일에 저장 및 복원하는 매우 간단한 스크립트 예제입니다 /tmp/myhistory.

#!/bin/bash
# emulate rlwrap nc -t localhost 23
HISTFILE=/tmp/myhistory
history -r              # read old history
while IFS= read -p 'netcat> ' -e    # sets REPLY, -e enables readline
do  history -s "$REPLY" # add to history
    history -w          # save to file
    echo "$REPLY"       # write to netcat
done |
nc -t remotehost 23

관련 정보