この問題に関するヘルプをいただければ幸いです。
基本的に、さまざまなサーバーに 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 を呼び出していないように感じます。