如何将pwd命令的输出分配给python中的变量?

时间:2015-11-10 23:11:20

标签: python bash shell scripting sh

我希望ssh进入远程VM并运行pwd并从我的python代码登录后获取当前目录。 例如,

    command = 'ssh ' + user + '@' + IP
    command += ' sudo -u vmuser -i && currDir=$(pwd) && echo $currDir '

当我从shell运行以下命令时,它会显示输出

     ssh user@10.0.0.1 "sudo -u newUser -i pwd && ls -la;"

但是当我尝试

     ssh user@10.0.0.1 "sudo -u newUser -i pwd && curr=$(pwd) && echo -e $curr;"

它没有给我任何预期的结果。 还有其他办法吗?

2 个答案:

答案 0 :(得分:0)

我刚从命令行执行此操作:

ssh my.server.com "pwd"

它给了:

/home/user

但是如果你想使用python在远程机器上ssh并运行命令,我强烈建议使用fabric

使用子流程:

import subprocess

out = subprocess.check_output(["ssh", "my.server.com", "pwd"])

print out

输出:

/home/user

答案 1 :(得分:0)

$ - escapes在双引号内运行,但不是单引号。您在本地计算机上运行pwd,而不是在远程计算机上运行。

试试这个:

ssh user@10.0.0.1 'sudo -u newUser -i pwd && curr=$(pwd) && echo -e $curr;'