Alterando o prompt no telnet

0

Com alguma ajuda de pessoas aqui, consegui definir um prompt personalizado em uma sessão ssh (obrigado!). Agora eu preciso fazer o mesmo no telnet, mas não tenho certeza de qual sintaxe eu poderia usar para isso.

Basicamente, o prompt de telnet é apenas um caractere > , preciso modificá-lo para algo que eu possa detectar com mais confiabilidade em tarefas de automação. Espero que isso faça sentido.

De dentro de telnet, tentando escapar desse comando com um estrondo como !PS1=spam e !PS2=eggs não o alterou.

wim@wim-acer:~$ ssh [email protected] -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:~$ 
    
por wim 13.03.2012 / 07:47

2 respostas

1

O prompt é fornecido pelo shell de comando, não pelos protocolos de rede, como SSH ou Telnet, e seus serviços e clientes associados. Não importa se você está usando telnet, ssh, um terminal serial ou um console local.

Você pode definir o prompt em muitos shells (por exemplo, bash) definindo variáveis de ambiente, como PS1 e PS2.

Tente

 > PS1="hello : "
 hello : 

UPDATE

Suas perguntas dizem ...

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

/bin/false não é um shell! É o tipo de entrada usado para desativar logins de telnet. Você não vai chegar a lugar algum com isso. Se você realmente quiser usar um protocolo inseguro como o telnet em vez de um protocolo seguro como o ssh, terá que configurar o serviço de telnet para fornecer um shell adequado.

    
por 13.03.2012 / 09:17
0

Como o @RedGrittyBrick escreveu, o fato de você estar usando telnet ou SSH não importa. O que importa é o encaminhamento de variáveis de ambiente.

O que você está, de fato, dizendo ao ssh para fazer é conectar-se a um TTY, então passar o comando export PS1='Sending a custom prompt \w \$ '; exec sh para o shell padrão.

Para o telnet, veja environ (veja a man page). Ele usa o protocolo telnet ENVIRON para transferir variáveis de ambiente através da conexão, e eu imagino que você pode adicionar os comandos apropriados ao seu ~ / .telnetrc se você quiser, ou apenas exportar as variáveis de ambiente apropriadas por sessão.

Para uma maneira correta de fazê-lo no SSH, consulte a seção AMBIENTE da página do manual do ssh. Não tenho certeza se vejo uma maneira óbvia de fazê-lo, por exemplo.

    
por 13.03.2012 / 09:45