Python-将远程主机的env变量与/SSH一起使用

Python-将远程主机的env变量与/SSH一起使用,python,linux,ssh,paramiko,Python,Linux,Ssh,Paramiko,在此问题上的任何帮助都将不胜感激 基本上,我正在编写一个python脚本,它将ssh连接到各种服务器上并执行脚本。问题是这些脚本使用一个env变量来启动。Ie脚本是test.sh,但我们使用一个env变量来启动它,运行test.sh 到目前为止,我采用的路径,例如Paramiko模块执行命令,但实际上并不采用env变量 import paramiko ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.Auto

在此问题上的任何帮助都将不胜感激

基本上,我正在编写一个python脚本,它将ssh连接到各种服务器上并执行脚本。问题是这些脚本使用一个env变量来启动。Ie脚本是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?还是我该走的另一条路

谢谢

@抢劫

我编辑了脚本以进行测试。$run变量返回为空

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

['testuser\n', 'hello\n', '\n', 'goodbye\n']
[]
@罗布第二部分

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

来进行拯救


除此之外,它还提供了一个漂亮的界面,利用paramiko(请参阅),还允许您操作。

ssh.exec_命令不解释远程
.profile
。试试这个:

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

假设您修复了语法错误,那么当您运行上述程序时会发生什么?“脚本是test.sh,但我们使用一个env变量来启动它,run test.sh”我不明白这意味着什么。如何使用env变量启动脚本?假设远程shell的
.profile
或类似的启动设置了
$run
环境变量,那么应该可以很好地工作。您可以通过
ssh.exec_命令('echo hello;echo$run;echo bye')
@JimGarrison来测试这一点-线索在代码中。他的意思是
$runtest.sh
。那么您还没有在远程机器上设置
run
环境变量。您如何设置
运行
?嗯,这是一个./.配置文件吗?对于$run,它仍然返回空白。但是它不会抛出任何错误。第一个命令是
。配置文件
。/。配置文件
。它不是
/.profile
。太棒了,它与../一起工作。个人资料谢谢你的帮助!