我希望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;"
它没有给我任何预期的结果。 还有其他办法吗?
答案 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;'