非常感谢有关此问题的任何帮助。
基本上我正在编写一个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。
答案 0 :(得分:5)
ssh.exec_command
无法解释远程.profile
。试试这个:
ssh.exec_command('. .profile ; cd /home/test/;$run ./test.sh')
答案 1 :(得分:0)
Plumbum救援。
除此之外,它提供了一个漂亮的界面,利用paramiko(参见ParamikoMachine),还可以让你操纵remote environment。