Запустите команду echo после ssh в iterm2

1069
Elad Kuzy

Я пытаюсь вызвать следующую команду после "ssh somehost": export PROMPT_COMMAND='echo -ne "\033]0;$HOSTNAME\007"'

ничего не работает, есть предложения?

1
Кажется, ничего не работает? что ты уже испробовал? scai 8 лет назад 0
Ну, у меня есть этот триггер в профиле: http://imgur.com/2Zu74my Когда я запускаю в эхо-тесте оболочки, команда не срабатывает. Elad Kuzy 8 лет назад 0
Если вы работаете в системе Unix, вы можете запустить `ssh root @ MachineB 'bash -s' <local_script.sh`, чтобы запустить содержимое` local_script.sh` после подключения к `MachineB`. pzkpfw 8 лет назад 0

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

0
MariusMatutiae

Я не думаю, что это можно сделать.

Прежде всего я должен был переписать вашу команду; хотя это аннулируется тем фактом (см. далее), что то, что вы хотите получить, не может быть достигнуто, тем не менее, способ сделать это представляет некоторый интерес и общность, поэтому я буду обсуждать это. Я должен был изменить вашу команду на

 ssh me@remote 'COLOR=("echo" "-ne" "\"\\033[48;5;95;38;5;214m\$HOSTNAME\033[0m\""); export PROMPT_COMMAND=$' 

Причина в том, что необходимо предотвратить замену локальной оболочки на $HOSTANMEее localзначение, поэтому то, что мы передаем на удаленный сервер, должно быть заключено в одинарные кавычки '. Для этого, чтобы работать, не должно быть не одинарные кавычки внутри команды, чтобы пройти, так что мне пришлось переписать его таким образом, что одинарные кавычки появляются в его команды будет выполняться удаленно. Мне удалось сделать это с массивом COLOR. Команда

COLOR=("echo" "-ne" "\"\\033[48;5;95;38;5;214m\$HOSTNAME\033[0m\"") export PROMPT_COMMAND=$ 

локально работает нормально (выбор цветов мой).

Существует два способа экспорта переменных среды через ssh. Во-первых, можно изменить переменную AcceptEnvв /etc/ssh/sshd_configфайле сервера : но в руководстве говорится

AcceptEnv

Определяет, какие переменные окружения, переданные клиентом, будут скопированы в сессию по окружа .

Акцент здесь делается на сессии : никаких глобальных изменений.

Второй способ - через PermitUserEnvironmentпеременную:

PermitUserEnvironment

Specifies whether ~/.ssh/environment and environment= options in ~/.ssh/authorized_keys are processed by sshd. The default is "no". Enabling environment processing may enable users to bypass access restrictions in some configurations using mechanisms such as LD_PRELOAD. 

Как видите, sshочень осторожно, не позволяя удаленному пользователю изменять глобальные переменные среды.

Спасибо за очень информативный и глубокий ответ, однако, я только пытаюсь повторить некоторые вещи. Даже что-то очень простое не работает. Например: trigger-test action-Run Command ... Параметры-echo hi не работает. Elad Kuzy 8 лет назад 0
@EladKuzy Не могли бы вы дать мне ** подробный ** пример команды, которая не работает? Я имею в виду, точную команду, которую вы попробовали. MariusMatutiae 8 лет назад 0
Проверьте последний триггер, который я добавил http://imgur.com/lkCPmkX. Затем я проверяю его в bash, вводя echo "hi". Другие триггеры работают, только тип действия "Выполнить команду ..." доставляет мне неприятности. Elad Kuzy 8 лет назад 0

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