2017-07-31 4 views
2

私は科学計算には新しく、多くのシミュレーションを実行するプロジェクトに取り組んでいます。私がこれを提供しているインフラストラクチャは、すべてがストレージを共有する約20種類のLinuxマシンです。これまで私がやってきたことは、個々のコンピュータに個別にsshして、シミュレーションプログラムを手動で実行するという、非常に非効率的な作業です。多くの異なるコンピュータ上で自動的にプログラムを実行する

私は、コンピュータのすべての名前と同じパスワードのリストを持っていることを考えれば、多くのLinuxマシンで多くの実行ファイルを自動的に実行する方法の概要を垣間見ることができますか?私は、各シミュレーションのために、今何をしなければならないかの例は次のとおりです。数字だけの引数である場合

$ ssh [email protected] 

[email protected]'s password: 

[email protected]:~$ ./executeprogram 2 5 8 & 

[email protected]:~$ ./executeprogram 2 5 10 & 

[email protected]:~$ ./executeprogram 2 5 12 & 

ホームディレクトリのシミュレーションexecuteprogramは取り込んでうまくいけば、あなたは20異なるcomputernameのため、これがあることを理解することができます。手で行うのはかなり面倒です。私が何を求めているのか不明な場合にはお詫び申し上げます。私はこの問題の解決策を見つけるために私がグーグルですべきことを知るための語彙がないので、ここで尋ねます。

+1

まず最初はまず、パスワードなしの操作のために*あなた* SSH公開鍵を設定します。次に、多くの異なるコンピュータに対して 'ssh user @ computer remote-program arg1 arg2 ...'を実行するスクリプトを書いてください。 –

答えて

3

主な問題が各SSHセッションのパスワードを入力する必要がある場合は、2つの簡単なオプションがあります。

  1. SSH pubキーを各リモートマシンにコピーします。ログインしようとするとパスワードをもう一度尋ねません。
  2. パスワードプロンプトを処理するためにsshpassを使用すると、一時的な作業にはこれが好まれない場合があります(公開鍵がリモートマシンのauthorized_keysファイルに永続的に追加されるため)。これはすばやく汚れた作業にはいいです。

    sshpass -p <mypassword> ssh [email protected] <REMOTE COMMAND> 
    

あなたは以下のようにheredocsを使用してSSHを介して複数のコマンドを実行することができ、

sshpass -p <mypassword> ssh [email protected] bash<<EOF 
<command 1> 
<command 2> 
... 
EOF 
関連する問題