7

对此问题的任何帮助将不胜感激。

基本上我正在编写一个 python 脚本,它将 ssh 到各种服务器并执行脚本。问题是这些脚本使用环境变量来启动。即脚本是test.sh,但我们使用环境变量来启动它,运行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']
[]

@抢劫第 2 部分

登录到服务器,我可以回显 $run,它会返回我也检查过的正确路径/脚本,这是在 .profile 中设置的环境变量。我觉得 python 没有调用 .profile 。

4

2 回答 2

5

ssh.exec_command不解释遥控器.profile。尝试这个:

ssh.exec_command('. .profile ; cd /home/test/;$run ./test.sh')
于 2013-11-12T21:17:30.910 回答
0

铅垂救援。

除其他外,它提供了一个漂亮的界面,利用 paramiko(请参阅 ParamikoMachine ,还允许您操作远程环境

于 2013-11-12T21:03:16.540 回答