Таким образом, я запускаю параллельную программу C++ путем отправки заданий от машины Ubuntu до удаленных хостов (также Ubuntu), командная строка, которую я использую на терминале, является чем-то как:
mpirun -np 4 --host host1,host2 program.exe
и затем следующая строка на терминале запрашивает пароль на оба хоста одновременно:
noob@host1's password: noob@host2's password:
И это вызывает меня некоторые проблемы. Существует ли способ вынудить терминал запросить мои пароли один за другим?
Я не знаю, существует ли способ вынудить терминал спросить последовательно, но в любом случае, предполагая, что Вы соединяетесь до ssh
, лучшее решение состояло бы в том, чтобы настроить passwordless доступ.
Создают общественность ssh, включают Вашу машину:
ssh-keygen -t rsa
Вас попросят пароля, который Вас попросят ввести первый время, Вы выполняете любую команду ssh после каждого входа в систему. Это означает, что для [приблизительно 114] или scp
команды, необходимо будет только ввести его однажды (не однажды на хост, однажды на сессию входа в систему). Тем не менее, можно оставить его пустым для имения полностью passwordless доступа.
, Как только Вы генерировали свой открытый ключ, скопируйте его в удаленные компьютеры:
ssh-copy-id -i ~/.ssh/id_rsa.pub noob@host1
ssh-copy-id -i ~/.ssh/id_rsa.pub noob@host2
, Если необходимо сделать это для многих хостов, сделайте файл имен узлов или дюйм/с (один на строку) и работайте, копируют их всех использование цикла оболочки:
while read ip; do
ssh-copy-id -i ~/.ssh/id_rsa.pub noob@$ip
done < IPlistfile.txt
необходимо будет вручную ввести пароль для каждого IP для этого шага, но как только Вы сделали это, необходимо быть в состоянии запустить задания без пароля, который требуют.
, Если это не работает, нам будет нужно больше деталей о том, как точно эта программа соединяется с удаленными хостами.
При использовании MPICH1, можно получить справку из этого метода.
Вместо того, чтобы писать host1, host2 после-np 4 можно добавить хосты" machines.linux" файл в этом месте назначения:
home/user/mpich1/share
*if Вы не устанавливали mpich в корневом каталоге, относитесь туда, где Вы установили mpich
, и откройте" machines.linux" файл. Ясное содержание файла и информация о типе хостов с количеством ядер Вы хотите:
host1:4
host2:2
host3:2
Теперь Вы используете mpirun просто:
mpirun -np 4 program.exe