Python でリモート Linux サーバーの環境変数を取得しようとしています。または、実行中のコマンドで変数名を使用できれば、それも素晴らしいことです。私の知る限り、私が行っている呼び出しは機能するはずですが、ゴミが戻ってきます。公開鍵認証を設定しているので、パスワードは不要です。
取り組み 1:
devdir = subprocess.check_output(["ssh", connectstring, "echo $DEVDIR"])
取り組み 2:
ret = subprocess.check_output(["ssh", connectstring,
"$DEVDIR/{0}".format(testpath)])
connectstring
user@ip であり、正常に動作します。$DEVDIR
使用したいリモート変数で、パスが含まれています。testpath
をルートとする、実行しようとしているスクリプトへのパスです$DEVDIR
。
試行 1 は "\n" を返し、試行 2 は $DEVDIR をリモートで解決できません。
取り組み 3:
import paramiko
...
ssh = paramiko.SSHClient()
ssh.connect(ip, user) # succeeds
stdin, stdout, stderr = ssh.exec_command("echo $DEVDIR")
結果: stdout.readlines() = "\n"