python - 通过中间主机 SSH 到机器

标签 python ssh

在我与教授的合作中,我必须通过 ssh 进入我们的服务器,然后从那里我通过 ssh 进入每个节点以运行我们的程序。我正在尝试编写一个 python 程序,它可以让我在本地计算机上的远程节点上执行我需要执行的所有操作。我将在节点上运行的命令是:

  • 从本地机器cp文件到远程节点
  • 在每个节点上运行一个程序
  • 从节点检索文件到我的本地机器
  • 也许可以复制 Fortran 程序并在节点上编译它,还可以检查节点以查看是否有任何程序正在运行。

现在我在我的本地机器上制作我的输入文件,将它们 scp 到服务器,然后我将文件复制到每个节点并在每个节点上运行我们的 fluid_dynamics 程序。然后我执行相反的操作,将我们的输出返回到我的本地机器。

我正在查看 paramiko,但我无法弄清楚如何使用它从我的本地计算机访问节点,因为我必须通过服务器。 local -ssh--> server -ssh--> nodes

有没有办法在 python 中执行此操作,或者我应该尝试其他方法,例如: 使用:

os.system(ssh -t server ssh node 'command')   

或者在服务器上为每个不同的命令(compile.sh、move_inputs.sh、retrieve_outputs.sh)制作一个 bash 脚本,然后连接到服务器并运行 bash 脚本。

抱歉,如果这没有意义或措辞不当,我们将不胜感激。

附加信息: 我使用 python 的原因是因为我希望程序能够生成输入文件,将它们发送到节点并检索输出文件,并最终生成数据图表。我已经有了一些代码来生成我们的输入文件并根据输出制作图表。

最佳答案

您不需要 Python 来执行此操作。检查ProxyCommand configuration option for SSH .这是一个tutorial解释了细节。

关于python - 通过中间主机 SSH 到机器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6366652/

相关文章:

python - variable_scope 和 name_scope 有什么区别?

jenkins - Jenkins Ansible插件中的Ansible,忽略SSH配置

ssh - 在一个客户端上使用多个 SSH 私钥的最佳方式

java - 检查远程文件是否存在 Linux

python - 在 python 程序中使用 "random"。与 "while"、 "if"和 elif"

python - Flask 多处理在进程完成之前不会返回响应

java - JSF 应用程序中的交互式终端仿真

python - 如何使用 Paramiko 通过中间主机 SSH 连接到机器?

python - 如何使用内置的身份验证机制保护Azure WebApp的安全

python - 如何在不使用python替换方法的情况下替换句子中的单词