Как использовать функцию профиля bash для удаленного подключения и доступа к удаленному терминалу

361
thanasissdr

Я хочу написать bash functionлокально (в MacOS), поэтому, когда я запускаю эту функцию, первая команда - подключиться к удаленному рабочему столу Ubuntu через ssh.

В двух словах:

 my_func () { ssh blah blah blah; echo $VARIABLE; } 

Желаемый результат - что-то вроде /home/ubuntu/path/to/directory, но я ничего не получаю. Так что у меня сложилось впечатление, что my_funcработает только локально.

PS Переменная среды $VARIABLEзадается ~/.bashrcв удаленном рабочем столе.

0
Где устанавливается $ VARIABLE? Также `;` 'не нужны, bash рассматривает новые строки как разделители команд. Как вы думаете, почему это будет работать удаленно? Jesse_b 7 лет назад 0
@Jesse_b Отредактировано. thanasissdr 7 лет назад 0
Итак, вы хотите подключиться к SSH к удаленной машине и затем выполнить команду: `echo $ VARIABLE`? Jesse_b 7 лет назад 0
@Jesse_b Точно (в основном, я хочу делать другие вещи, но это важный шаг для достижения следующих шагов). thanasissdr 7 лет назад 0

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

0
Jesse_b

Если я правильно понимаю, это должно работать:

my_func () { ssh user@ip echo '$VARIABLE' } 

или если у вас есть больше команд, вы можете сделать:

my_func () { ssh user@ip <<'EOF' echo $VARIABLE command2 command3 EOF } 

Вы также можете (мой любимый инструмент для выполнения большого количества команд) поместить ваши команды в другой файл и сделать это:

my_func () { SOURCE_FILE='/path/to/file' cat "$SOURCE_FILE" | ssh user@ip } 
Я думаю, что вам нужно экранировать переменную следующим образом: `" \ $ VARIABLE "` или использовать одинарные кавычки, такие как `'$ VARIABLE'`. gogators 7 лет назад 2
@Jesse_b К сожалению, ни одна из этих работ. Мне удается подключиться к удаленному терминалу, но потом, когда я эхо, ничего не происходит. thanasissdr 7 лет назад 0
@gogators Спасибо! Вы правы: локальный компьютер пытался расширить переменную перед отправкой на удаленный компьютер. Jesse_b 7 лет назад 0

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