Я хочу передать ssh узлу и запустить команду, а затем выйти. Это повторяется для всех кивок. Сценарий довольно простbash script to ssh и команды запуска
#!/bin/bash
NODES="compute-0-0 compute-0-1 compute-0-2 compute-0-3"
for i in $NODES
do
ssh $i
ls -l /share/apps
rpm -ivh /share/apps/file.rpm
exit
done
Но проблема заключается в том, что после SSH, команда ls -l
пропущена. Поэтому командное приглашение ждет ввода!
Любой способ исправить это?
UPDATE:
Я изменил тело цикла, как
ssh $i <<END
ls -l /share/apps
exit
END
Но я получаю
./lst.sh: line 9: warning: here-document at line 5 delimited by end-of-file (wanted `END')
./lst.sh: line 10: syntax error: unexpected end of file
См http://stackoverflow.com/questions/37586811/pass-commands-as-input-to-another-command-su-ssh-sh-etc – Leon
Если вы хотите ваш раздел 'ssh' скрипта будет отступом, используйте' << - END' – Leon
Ответ, который вы приняли, должен работать. Тем не менее, ваш подход «здесь-док» не был неправильным. Я думаю, вы добавили некоторые пробелы перед 'END' после строки' exit'. В качестве альтернативы, если вы wnt те пространства для отступов, измените строку heredoc на 'ssh $ i << - END' (обратите внимание на оператор' << - 'вместо' << ') – anishsane