我正在尝试在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'"])
...为我工作。