Выполненный ssh как команда другой команды ssh

Необходимо знать, какую программу Вы хотите использовать для открытия файла. Если это - изображение, Вы могли бы использовать gwenview или что-то.

Взятие входа и превращение его в аргументы сделаны с xargs. И Вы захотите выйти из того подстановочного знака...

find . -name \*xyz | xargs gwenview

И обработать пробелы в именах файлов....

find . -name \*xyz | xargs -d"\n" gwenview
2
13.04.2017, 15:36
2 ответа

У Вас есть Escape $. Иначе $(ssh-agent -s) будет оценен на Вашей локальной машине вместо машины шлюза.

ssh user@Gateway "ssh Target 'eval \$(ssh-agent -s);ssh-add my_key;mpirun --hostfile .hosts program'"

Можно проверить результаты выхода при помощи эха

$ echo "foo $(echo bar)"
foo bar
$ echo "foo \$(echo bar)"
foo $(echo bar)
2
27.01.2020, 21:57

Ваша команда оценивает $(ssh-agent -s) на локальной машине, так как это между двойными кавычками. Необходимо поместить целую команду для работы шлюза между одинарными кавычками. Так как та команда сама содержит одинарные кавычки (для защиты кода, это, как предполагается, выполняется на цели), необходимо выйти из тех одинарных кавычек как '\''.

ssh user@Gateway 'ssh Target '\''eval $(ssh-agent -s); ssh-add my_key; mpirun --hostfile .hosts program'\'

Можно автоматизировать шаг шлюза путем конфигурирования локального ssh клиента. Вставьте это Ваш ~/.ssh/config:

Host Target
User user
ProxyCommand ssh Gateway nc %h %p

nc netcat. Затем выполненный

ssh Target 'eval $(ssh-agent -s);ssh-add my_key;mpirun --hostfile .hosts program'

непосредственно от локальной машины.

3
27.01.2020, 21:57

Теги

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