【发布时间】:2018-06-05 07:07:04
【问题描述】:
我在本地使用 paramiko 将 ssh 连接到 unix 服务器。我想从服务器上的本地启动一个可执行文件。可执行文件当前从 local/paramiko 失败,因为当我使用 paramiko ssh 时未正确设置 LD_LIBRARY_PATH 环境变量,但是当我使用 putty 并以交互方式工作时它会自动设置。当我通过 putty 登录机器时,可执行文件按预期工作,但是当我从本地通过 paramiko 登录时,可执行文件返回与 LD_LIBRARY_PATH 环境设置不正确有关的错误。
当我使用 putty 登录机器时,管理员 .login 文件为变量 LD_LIBRARY_PATH 指定了一系列路径。它看起来像这样:
setenv LD_LIBRARY_PATH path1:path2:path3:...
但是,通过 paramiko 登录时,此管理脚本未启动,我需要手动设置 LD_LIBRARY_PATH 变量。
我的连接如下:
ssh = pk.SSHClient()
ssh.set_missing_host_key_policy(pk.AutoAddPolicy())
ssh.connect(hostname='server', username='user', password='password')
我要运行的命令如下:
stdin, stdout, stderr = ssh.exec_command('nohup executablefile')
如何设置我的 LD_LIBRARY_PATH,然后使用 paramiko 的 exec_command 执行我的程序,还是应该寻找不同的函数?
【问题讨论】:
-
具体见my answer。
-
我不同意,因为更改 get_pty 参数不会导致任何更改(仍然收到环境路径错误)。我也不明白在使用 ssh.connect 时如何实现 ssh -T myuser@host 解决方案 - 这是 shh.connect 的选项吗?启动文件设置正确,可用于交互式 putty,但我无法像 putty 那样让 paramiko 进入 ssh。
-
那么我们需要了解更多。以下哪个有效:
ssh -T user@host nohup executablefile、ssh user@host nohup executablefile? -
已编辑,我会给你任何我能提供的信息。
-
您还觉得这是一个重复的问题吗?我认为场景和解决方案都与众不同。
标签: python unix ssh environment-variables paramiko