我正在尝试在Python中检索远程Linux服务器的环境变量。另外,如果我可以在执行的命令中使用变量名,那也很好。据我所知,我正在拨打的电话应该可以正常工作,但是我正在回垃圾。我已经设置了公共(public)密钥身份验证,因此不需要密码。

努力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”

最佳答案

如果在.bashrc中设置了环境变量,则可以使用-l选项强制远程命令在登录shell下运行。以下...

devdir = subprocess.check_output(["ssh", connectstring, "sh -l -c 'echo $DEVDIR'"])

...为我工作。

10-08 11:04