I'm trying to retrieve environment variables of a remote Linux server in Python. Alternatively, if I could use the variable name in the command I'm executing, that'd be great as well. The calls I'm making should work, as far as I can tell, but I'm getting back garbage. I have set up public-key authentication, so no password required.
Effort 1:
devdir = subprocess.check_output(["ssh", connectstring, "echo $DEVDIR"])
Effort 2:
ret = subprocess.check_output(["ssh", connectstring,
"$DEVDIR/{0}".format(testpath)])
connectstring
is user@ip and works fine. $DEVDIR
is the remote variable I want to use and contains a path. testpath
is the path to the script I'm trying to execute, rooted at $DEVDIR
.
Effort 1 returns "\n", Effort 2 fails to resolve $DEVDIR remotely.
Effort 3:
import paramiko
...
ssh = paramiko.SSHClient()
ssh.connect(ip, user) # succeeds
stdin, stdout, stderr = ssh.exec_command("echo $DEVDIR")
result: stdout.readlines() = "\n"