3

Я часто подключаюсь к серверам через пользователя, которым делюсь с другими коллегами, каждый раз, когда я подключаюсь к каждому серверу, я выполняю пару команд, таких как bash , set -o vi и т.д.

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

В основном как то так:

echo "bash; set -o vi; <DONT_EXIT>;" | ssh user@host

Что-нибудь встроенное в утилиту клиента ssh? Любые обходные пути, которые выполняются с моей стороны? Я знаю об обходных путях на стороне сервера, которые мне не нужны. Я не могу найти это нигде, так что, я в основном подтверждаю, что это на самом деле не может быть сделано.

Я использую Linux с утилитой OpenSSH ssh по умолчанию.

3 ответа3

4

Я искал параметр: -t, который заставит клиента ssh выделить терминал, поэтому он выглядит так:

ssh -t user@host "bash -o vi"

Это заставит меня автоматически включить режим vi при подключении, но выполнение большего количества команд будет более хитрым, так как, если я добавлю больше команд впоследствии, они будут выполнены после выхода из bash и немедленно выйдут из всего, поэтому все команды должны быть выполнены до него.

1

Вы можете добавить команды в файл:

~/.bashrc

когда вы входите в систему, сначала выполняйте эти команды, а в конце она дает вам оболочку.

0

Возможно завершите свою строку команд с вашей оболочкой, с которой вы хотите взаимодействовать?

ssh user@host "bash -c 'set -o vi; bash'"

Я проверил это, и кажется, что он запускает начальные команды, а затем работает в интерактивном режиме, однако стандартный вывод не возвращается должным образом. Надеюсь, кто-то еще может указать на решение этой проблемы.

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