如何使用挂载的文件系统在远程服务器上使用本地库运行子进程?

时间:2013-12-10 19:09:15

标签: python linux mount

我正在使用子进程通过已安装的网络文件系统在另一台计算机上运行程序。

我在这个项目中的第一步是使用sshfs mount和wget:

sys_process = subprocess.Popen(wget_exec.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  • 使用命令:wget完美无缺
  • 使用命令:/mnt/ssh_mount/wget不执行

系统库:

  • 我的远程系统是:Arch Linux,它正在调用libpcre.so.1
  • 我的本地系统是:Ubuntu,它使用libpcre3,因此缺少libpcre.so.1

我知道这一点因为当我通过ssh mount(/ mnt / ssh_mount / bin / wget)调用wget命令时会抛出错误。我不希望使用这个安装所有系统所需的库,因为它无法尝试远程运行某些东西。

已进行权限的度量检查

如何获取使用本地库的命令?

我希望也能使用nfs作为解决方案:

我尝试过(没有成功) os.chdir('/mnt/ssh_mount')

Error while loading shared libraries: 'libpcre.so.0: cannot open shared object file: No such file or directory'假定一个稳定的挂载点,当环境发生变化时会导致2个位置发生变化(从数据库规范化背景来看这似乎是错误的,我会假设代码/系统管理员也是如此)

1 个答案:

答案 0 :(得分:2)

您实际上并没有在远程计算机上运行wget命令 - 您正在尝试在本地系统上运行远程计算机的二进制文件,并且由于库不兼容而导致命令失败版本。 sshfsnfs和其他类型的网络安装协议只是将远程文件系统挂载为本地扩展 - 它们不允许远程执行。为此,您需要使用ssh隧道打开远程shell并执行Arch wget命令。