首页 > 解决方案 > 如何在登录服务器后立即在mac终端执行python脚本编写的命令

问题描述

import os.path
import subprocess
import sys
os.system('sshpass -p password ssh root@esst-warp-d')
subprocess.call('lscpu')

我尝试了上面的代码,但是该命令将在退出服务器后执行。

import os.path
import subprocess
import sys
os.system('sshpass -p password ssh root@esst-warp-d')
ssh root@esst-warp-d "lscpu"

如果我尝试上面的代码,我将在第五行得到语法无效

你能帮我解决问题吗?

标签: pythonmacosauthenticationsshcommand

解决方案


当你运行os.system("sshpass ...")它时,它会创建一个与其他任何东西无关的新进程,并sshpass在其中运行你的命令。然后该过程退出。

当你运行subprocess.call()它时,它会在你的本地机器上创建一个与上面刚刚退出的进程无关的新进程,并在其中运行你的命令。然后该过程退出。

您实际上想要创建一个连接到远程 Linux 机器的新进程,然后在那里运行一个命令,所以您需要这个:

sshpass -p password ssh root@esst-warp-d '/path/to/lscpu'

在您的终端中尝试。


推荐阅读