텔넷 출력버퍼? 개행문에러..? 질문드립니다.
글쓴이: kysu5095 / 작성시간: 금, 2020/10/23 - 1:05오후
안녕하세요. 이게 무슨 문제인지도 잘 모르겠어서 제목을 저렇게 적었습니다.
현재 A PC에 있는 로그(dmesg)를 B PC에서 telnet으로 통신하여 받아오는 작업을 하고 있습니다.
먼저 A PC에서의 dmesg의 예시가
00:00:00 aaaaaa 00:00:00 bbbbbb 00:00:00 cccccc 00:00:00 dddddd 00:00:00 eeeeee
라면 B PC에서 telnet을 통해 받은 A PC의 dmesg는
00:00:00 aaaaaa 00:00:00 bbbbbb 00:00:00 cccccc 00:00:00 dddddd 00:00:00 eeeeee
처럼 나오고 있습니다.
위의 문제가 뭔지 모르겠어서 무엇을 질문해야하는지도 잘 모르겠습니다ㅠ
어떤이유로 위와같은 문제가 생기는거며 어떻게 해결해야 할까요..?
환경은 Ubuntu 16.04 LTS입니다.
Forums:
A에서 B로 보낼 때 개행을 추가 하세요 (\r\n)
A에서 B로 보낼 때 개행을 추가 하세요 (\r\n)
----------------------
얇은 사 하이얀 고깔은 고이 접어서 나빌레라
답변 감사합니다.
제가 설명을 부족하게 한 것 같습니다.
지금 보내고 있는 로그는 A PC의 /var/log/messages에 있는 커널로그 입니다.
따로 카피해서 보내는것이 아닌 messages파일 자체를 통신하여 실시간으로 공유하고 있습니다.
혹시 이 부분에서 개행을 추가할 수 있을가요?
/var/log/messages에 있는 커널로그는
/var/log/messages에 있는 커널로그는 \n 만 있습니다. 터미널에서 개행이 되게 하려면 \r\n을 추가해야 합니다.
----------------------
얇은 사 하이얀 고깔은 고이 접어서 나빌레라
답변 감사드립니다.
넵 추가하는 작업을 해보겠습니다
리눅스를 포함한 유닉스 계열에서는 텍스트 파일의 각
리눅스를 포함한 유닉스 계열에서는 텍스트 파일의 각 줄이 LF(Line Feed : \x0A) 문자 하나로 끝나고, 터미널에서는 LF를 만나면 CR(Carriage Return : 0x0D)을 붙여서 CRLF(0x0D0A) 처럼 처리합니다. CR은 커서를 줄 맨 앞으로 보내는 일을 하고 LF는 한 줄아래로 내리는 일을 하므로, 둘이 조합된 CRLF는 다음줄 맨 앞으로 커서가 이동하게 만드는거죠.
지금 보이는 계단현상은, LF를 CRLF처럼 처리하지 않고 문자그대로 Line Feed로만 처리할때 일어나는 모습입니다.
내용물을 보여주는 쪽에서 LF를 CRLF처럼 처리하도록 하거나, 내용물을 읽고 가져오는 과정 어딘가에서 LF가 CRLF로 바뀌게 만들어야겠네요.
답변 감사드립니다.
CR을 추가하는 방법을 찾아보겠습니다. 감사합니다!
어떤 식으로 내용물을 읽고 가져오시는지는 모르겠으나,
어떤 식으로 내용물을 읽고 가져오시는지는 모르겠으나,
서버쪽에 스크립팅이 가능한 상황이라면,
sed 's/$/\r/' /var/log/messages
식으로 처음 파일을 읽어낼때 CR을 추가할수도 있고B PC에서 telnet 클라이언트로 putty를 쓰실 수 있는 상황이라면, putty 설정에서 [Terminal] -> [Implicit CR in every LF] 옵션을 켜서 전송과정에서 CR을 추가할 수도 있습니다.
힌트가 될 지 모르겠네요.
답변 감사드립니다.
힌트 감사드립니다.ㅠ 클라쪽에서 putty사용이 어렵기에 서버쪽에서 바꾸어 보는쪽으로 찾아보겠습니다
Serial Programming Guide for
Serial Programming Guide for POSIX Operating Systems
https://www.cmrr.umn.edu/~strupp/serial.html
서버측 프로그램의 tty output option 을 손보시던가
클라이언트측 프로그램의 tty input option 을 손보세요.
댓글 달기