Изменение приглашения в telnet

2016
wim

С некоторой помощью от людей здесь я смог установить пользовательское приглашение в сеансе ssh (спасибо!). Теперь мне нужно сделать то же самое в telnet, но я не уверен, какой синтаксис я мог бы использовать для этого.

По сути, приглашение telnet - это просто >символ, мне нужно изменить его на то, что я могу более надежно обнаружить в заданиях автоматизации. Надеюсь, это имеет смысл.

Изнутри telnet, пытаясь избежать этой команды с ударом, как !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:~$  
0
Хммм ... Спам, прекрасный Спам, замечательный Спам! Daniel Beck 12 лет назад 1

2 ответа на вопрос

1
RedGrittyBrick

Подсказка предоставляется командной оболочкой, а не сетевыми протоколами, такими как SSH или Telnet и связанными с ними службами и клиентами. Не имеет значения, используете ли вы telnet, ssh, последовательный терминал или локальную консоль.

Вы можете установить приглашение во многих оболочках (например, bash), установив переменные среды, такие как PS1 и PS2.

Пытаться

 > PS1="hello : " hello :  

ОБНОВИТЬ

Ваши вопросы говорят ...

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

/bin/falseне оболочка! Это та запись, которая используется для отключения входа в систему через Telnet. С этим ты никуда не денешься. Если вы действительно хотите использовать небезопасный протокол, такой как telnet, вместо безопасного протокола, такого как ssh, вам придется настроить службу telnet, чтобы предоставить вам подходящую оболочку.

Это работает в sh, но в telnet я получаю `PS1 =" hello: ": неизвестная команда` wim 12 лет назад 0
@ Wim: см обновленный ответ. RedGrittyBrick 12 лет назад 0
Спасибо! устройство является приставкой, и у меня нет прав на изменение прошивки, я просто пытаюсь автоматизировать определенные задания на сотнях этих ящиков с помощью `pexpect`, и было бы проще, если бы я мог надежно сопоставить подсказку wim 12 лет назад 0
0
a CVn

Как писал @RedGrittyBrick, тот факт, что вы используете telnet или SSH, не имеет значения. Что важно, так это пересылка переменных среды.

Фактически, вы говорите ssh, что нужно подключиться к TTY, а затем передать команду export PS1='Sending a custom prompt \w \$ '; exec shоболочке по умолчанию.

Посмотрите на telnet environ(см. Справочную страницу). Он использует протокол telnet ENVIRON для передачи переменных среды через соединение, и я полагаю, что вы можете добавить соответствующие команды в ~ / .telnetrc, если хотите, или просто экспортировать соответствующие переменные среды для каждого сеанса.

Чтобы узнать, как это сделать в SSH, посмотрите раздел ENVIRONMENT на странице man ssh. Не уверен, что вижу очевидный способ сделать это в каждом случае, хотя.

Похожие вопросы