С некоторой помощью от людей здесь я смог установить пользовательское приглашение в сеансе ssh (спасибо!). Теперь мне нужно сделать то же самое в 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:~$ 

2 ответа2

1

Подсказка предоставляется командной оболочкой, а не сетевыми протоколами, такими как 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, чтобы предоставить вам подходящую оболочку.

0

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .