텔넷에서 프롬프트 변경


0

여기 사람들의 도움으로 ssh 세션에서 사용자 정의 프롬프트를 설정할 수있었습니다 (감사합니다!). 이제 텔넷에서 동일한 작업을 수행해야하지만 어떤 구문을 사용할 수 있는지 잘 모르겠습니다.

기본적으로 텔넷 프롬프트는 >문자 일 뿐이 므로 자동화 작업에서보다 안정적으로 감지 할 수있는 것으로 수정해야합니다. 이것이 의미가 있기를 바랍니다.

내부 텔넷에서와 같은 쾅하고 그 명령을 탈출하려고 !PS1=spam하고 !PS2=eggs변경하지 않았다.

wim@wim-acer:~$ ssh guest@192.168.1.124 -i ~/.ssh/guest_nopassphrase -t "export PS1='Sending a custom prompt \w \$ '; exec sh"
Sending a custom prompt ~ $ set
HOME='/var/tmp'
IFS='   
'
LOGNAME='guest'
PATH='/sbin:/usr/sbin:/bin:/usr/bin'
PPID='1128'
PS1='Sending a custom prompt \w $ '
PS2='> '
PS4='+ '
PWD=''
SHELL='/bin/sh'
TERM='xterm'
USER='guest'
Sending a custom prompt ~ $ telnet localhost <snip>

Entering character mode
Escape character is '^]'.

> !set
CONSOLE='/dev/ttyp0'
HOME='/var/tmp'
IFS='   
'
LOGNAME='root'
PATH='/sbin:/bin:/usr/sbin:/usr/bin'
PPID='546'
PREVLEVEL='N'
PS1='\w \$ '
PS2='> '
PS4='+ '
PWD='/var/tmp'
RESPAWN_COUNT='1'
RESPAWN_LAST='0'
RESPAWN_MAX='5'
RESPAWN_TIME='5'
ROOTDEV='/dev/sla1'
RUNLEVEL='5'
SHELL='/bin/false'
TERM='linux'
USER='root'
> 
> Connection closed by foreign host
Sending a custom prompt ~ $ Connection to 192.168.1.124 closed.
wim@wim-acer:~$ 

1
흠 ... 스팸, 멋진 스팸, 멋진 스팸!
Daniel Beck

답변:


1

이 프롬프트는 SSH 또는 Telnet과 같은 네트워크 프로토콜과 관련 서비스 및 클라이언트가 아닌 명령 셸에서 제공됩니다. telnet, ssh, 직렬 터미널 또는 로컬 콘솔을 사용하는지는 중요하지 않습니다.

PS1 및 PS2와 같은 환경 변수를 설정하여 많은 쉘 (예 : bash)에서 프롬프트를 설정할 수 있습니다.

시험

 > PS1="hello : "
 hello : 

최신 정보

당신의 질문은 말합니다 ...

  $ telnet localhost <snip>
  …
  > !set
  …
  SHELL='/bin/false'
  …
  > Connection closed by foreign host

/bin/false껍질이 아닙니다! 텔넷 로그인을 비활성화하는 데 사용되는 항목입니다. 당신은 이것으로 아무데도 가지 않을 것입니다. ssh와 같은 보안 프로토콜 대신 telnet과 같은 안전하지 않은 프로토콜을 실제로 사용하려면 적절한 쉘을 제공하도록 텔넷 서비스를 구성해야합니다.


이것은 sh에서 작동하지만 telnet에서는PS1="hello : ": unknown command
wim

@ wim : 업데이트 된 답변을 참조하십시오.
RedGrittyBrick 11

감사! 이 장치는 셋톱 박스이며 펌웨어를 수정할 수있는 권한이 없습니다. 수백 개의 상자에서 특정 작업을 자동화하려고 pexpect하는데 프롬프트와 안정적으로 일치시킬 수 있다면 더 쉬울 것입니다.
wim

0

@RedGrittyBrick이 쓴 것처럼 텔넷 또는 SSH를 사용한다는 사실은 중요하지 않습니다. 중요한 것은 환경 변수 전달입니다.

실제로 ssh에게 지시하는 것은 TTY에 연결 한 다음 명령 export PS1='Sending a custom prompt \w \$ '; exec sh을 기본 쉘에 전달하는 것 입니다.

텔넷은 environ(Man 페이지 참조)를보십시오. 그것은 telnet ENVIRON 프로토콜을 사용하여 연결을 통해 환경 변수를 전송하며 원하는 경우 ~ / .telnetrc에 적절한 명령을 추가하거나 세션별로 적절한 환경 변수를 내보낼 수 있다고 생각합니다.

SSH에서 올바르게 수행하는 방법은 ssh 매뉴얼 페이지의 ENVIRONMENT 섹션을 참조하십시오. 그래도 인스턴스별로 명확한 방법을 알지 못합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.