У меня простая проблема: мне нужно выполнить команду экспорта по ssh, а затем оставаться в системе, но у меня возникли проблемы. Хотя я заинтересован в решении этой проблемы по многим причинам, основная из них заключается в том, что я могу настроить вкладки терминала на имя по своему выбору.
Вот команда, которая у меня есть:
ssh -t root@somehost "export PROMPT_COMMAND=''; echo -ne '\033]0;MY_TAB_NAME'; echo -ne '\007'; /bin/bash -i"
Это довольно странно, и я думаю, что я почти что там. Параметр -t открывает pty (псевдотерминал), а параметр / bin / bash -i открывает интерактивный сеанс bash (таким образом, оставаясь в системе после выполнения команды ssh. Команда экспорта просто очищает приглашение, чтобы следующее эхо было переименуйте его.
У меня проблема в том, что экспорт, похоже, не выполняется в правильной оболочке. Я думаю, что мне не хватает чего-то довольно простого.
Кроме того, я пытаюсь сделать это исключительно на основе командной строки, не используя различные файлы .bash. У меня есть сотни серверов, к которым я подключаюсь, и у меня есть простой способ добавить в закладки все подключения, но мне просто нужен способ указать имя каждой вкладки в моем терминале (Mac OS X, готов использовать iTerm, если существует более простое решение).
Спасибо!
Возможно, вам стоит взглянуть на использование ~/.ssh/environment
или environment
вариант в ~/.ssh/authorized_keys
вместо. Увидеть sshd(8)
справочную страницу для подробностей.
ssh host -t VAR=VALUE bash --login
У меня простая проблема: мне нужно выполнить команду экспорта по ssh, а затем оставаться в системе [...]
Просто чтобы решить ваш главный вопрос, не вдаваясь в остальную часть проблемы. Если вы хотите экспортировать некоторые переменные (или другой материал среды), вы можете использовать env
.
В env
Команда позволяет запускать программу в измененной среде. Следовательно, вы можете использовать его для запуска bash -i
на удаленном сервере, изменяя среду по желанию.
Я оставляю вам только один пример:
hmontoliu@laptop:~$ ssh -t remoteuser@remoteserver env EXPORTEDSTUFF='foo' MOREXPORTEDSTUFF='bar' bash -i
remoteuser@remoteserver's password:
remoteuser@remoteserver:~$ echo $EXPORTEDSTUFF
foo
remoteuser@remoteserver:~$ echo $MOREXPORTEDSTUFF
bar
Проверьте страницу руководства env
HTH