7

この問題に関するヘルプをいただければ幸いです。

基本的に、さまざまなサーバーに ssh してスクリプトを実行する Python スクリプトを作成しています。問題は、これらのスクリプトが環境変数を使用して開始することです。つまり、スクリプトは 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']
[]

@ロブ その2

サーバーにログオンすると、$run をエコーすることができ、チェックした正しいパス/スクリプトが返されます。これは、.profile に設定されている環境変数です。Python が .profile を呼び出していないように感じます。

4

2 に答える 2

0

救助にプラムバム

とりわけ、paramiko ( ParamikoMachineを参照) を活用した気の利いたインターフェースを提供し、リモート環境を操作することもできます。

于 2013-11-12T21:03:16.540 に答える