2017-07-31 116 views
2

我是科学计算的新手,并且正在研究一个涉及运行许多模拟的项目。我为此提供的基础架构大约有20台不同的Linux机器,它们共享存储空间。到目前为止,我一直在做的工作是单独使用每台计算机并手动运行模拟程序,这是一项非常低效的任务。在许多不同的计算机上自动运行程序

考虑到我有电脑和相同的密码的所有名称的列表,为每一个,可能有人提供了如何有关自动去许多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会话输入密码,有两个快速选项。

  1. 将您的SSH pub key复制到每台远程机器上。尝试登录时,它们不会再要求输入密码。 (您可能不希望临时工作,因为您的公钥将被永久添加到远程计算机的authorized_keys文件中)
  2. 使用sshpass来处理密码提示。这对于快速和肮脏的工作很好。

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

您可以通过使用heredocs如下SSH实现无密码操作第一运行多个命令,

sshpass -p <mypassword> ssh [email protected] bash<<EOF 
<command 1> 
<command 2> 
... 
EOF 
相关问题