任何有关此问题的帮助都将不胜感激。
基本上,我正在编写一个Python脚本,用于通过SSH登录各种服务器并执行脚本。问题在于这些脚本使用环境变量进行启动。例如,脚本是test.sh,但我们使用环境变量来启动它,运行test.sh。
到目前为止,我采取的方法,例如Paramiko模块执行命令,但实际上没有采用环境变量。
基本上,我正在编写一个Python脚本,用于通过SSH登录各种服务器并执行脚本。问题在于这些脚本使用环境变量进行启动。例如,脚本是test.sh,但我们使用环境变量来启动它,运行test.sh。
到目前为止,我采取的方法,例如Paramiko模块执行命令,但实际上没有采用环境变量。
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 第二部分
登录服务器后,我可以使用echo $run命令并返回正确的路径/脚本。 同时我也检查了一下,这是在.profile文件中设置的环境变量。 我感觉Python没有调用.profile文件。
.profile
或类似的启动设置了$run
环境变量,那么这应该完美地工作。您可以通过ssh.exec_command('echo hello ; echo $run ; echo goodbye')
进行测试。 - Robᵩ$run test.sh
。 - Robᵩ