Я пытаюсь написать сценарий для входа на несколько удаленных серверов и выполнить скрипт на каждом сервере. Однако, я хотел бы передать переменную через ssh. Что-то вроде этого:Передача переменных через ssh
var="/home/dir/"
ssh -T $mchname <<'ENDSSH'
$var"run_script" <input> output &
ENDSSH
Эта наивная попытка не работает ($ var просто null). Какой был бы правильный синтаксис? Заранее спасибо.
Хорошо, это работает. Но теперь элемент управления просто возвращается к главному сценарию, как только «run_script» завершается в $ mchname (хотя я использую «&»), чего я не хочу. Как я могу это исправить? Извините за основные вопросы. Если вы захотите, вы можете указать мне на какой-то учебник по ssh, где я могу это разобраться. Благодарю. – user1477337
@ user1477337: Амперсанд действует на конечной машине и просто означает, что управление возвращается к основному скрипту быстрее, так как ему не нужно ждать завершения 'run_script'. Но поскольку после команды 'ssh' и ее документа здесь ничего нет, главный скрипт должен выйти, как только соединение' ssh' будет закрыто, что должно быть почти сразу. Однако, если есть какая-то причина, в которой вы нуждаетесь, вы можете попробовать префикс 'exec' для команды' ssh': 'exec ssh ...' Все это связано с оболочкой и в основном не относится к 'ssh'. –