С -q
опция, wget сама ничего не должна производить ни к одной консоли, ни файлу журнала, указанному -o
опция, за исключением случая описана Michał. Файл журнала однако будет создан (если -o
был предоставлен).
Это однако не гарантирует, что никакие системные демоны не заметят того, что wget был выполнен - сетевая активность может независимо контролироваться другими инструментами.
Я думаю, что проблема находится в этой строке:
ssh M 'exec ssh-agent bash;ssh-add my_rsa_key;mpirun --hostfile .hosts -np 10 sample'
Существует по крайней мере несколько проблем:
exec ssh-agent
часть заменит текущую оболочку (удаленная оболочка, запущенная ssh) с [ssh-агентом], таким образом, следующие команды никогда не будут выполняться.
для [ssh-добавляют], чтобы говорить [ssh-агент], несколько переменных среды должны быть определены, говоря местоположение сокета агента.
Таким образом, обычный способ запустить ssh-агент через оболочку eval
команда:
eval $(ssh-agent -s)
Я поэтому изменил бы последнюю строку Вашего сценария к:
ssh M 'exec $(ssh-agent); ...(keep the rest unchaged)'
Обратите внимание, что необходимо использовать одинарные кавычки '
здесь, иначе $(...)
будет расширен оболочкой, запускающей скрипт, т.е. ssh-агент будет запущен на Вашей локальной машине.
С другой стороны, Вы могли настроить все свои хосты EC2 (M и M1+M2) и Ваш локальный ssh клиент для разрешения передачи агента, и Вы просто выполняете агент локально. Затем необходимо было бы только быть уверены, что ключ, который Вы добавляете локально, является authroized на каждом удаленном хосте.
Как насчет упрощают эту целую проблему при помощи ssh-agent-forwarding вместо этого? Можно передать учетные данные от локального ssh-agent
для использования на удаленной машине, таким образом, Вы не должны волноваться о выполнении нового агента и добавлении ключей там.