Python - 使用/ SSH使用远程主机的env变量

时间:2013-11-12 20:14:25

标签: python linux ssh paramiko

非常感谢有关此问题的任何帮助。

基本上我正在编写一个python脚本,它将ssh到各种服务器上并执行脚本。问题是这些脚本使用env变量来启动。即脚本是test.sh但我们使用env变量来启动它,运行test.sh。

到目前为止我所采取的路线,例如Paramiko模块执行命令但实际上并没有采用env变量。

import paramiko
ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect('testserver' )

stdin, stdout, stderr = ssh.exec_command(cd /home/test/;$run ./test.sh')
print stdout.readlines()
print stderr.readlines()
ssh.close()

有没有办法使用paramiko?或者我应该采取另一种方式?

由于

@ Rob

我编辑了要测试的脚本。 $ run变量空白。

stdin, stdout, stderr = ssh.exec_command('whoami;echo hello; echo $run ; echo goodbye')

['testuser\n', 'hello\n', '\n', 'goodbye\n']
[]

@ Rob part 2

登录到服务器,我能够回显$ run并返回正确的路径/脚本 我也检查过,这是一个在.profile中设置的env变量。我觉得python没有调用.profile。

2 个答案:

答案 0 :(得分:5)

ssh.exec_command无法解释远程.profile。试试这个:

ssh.exec_command('. .profile ; cd /home/test/;$run ./test.sh')

答案 1 :(得分:0)

Plumbum救援。

除此之外,它提供了一个漂亮的界面,利用paramiko(参见ParamikoMachine),还可以让你操纵remote environment