Skip to main content
 首页 » 编程设计

python之Popen 远程命令

2025年05月04日17mfrbuaa

希望运行命令:ssh user@some_host "echo 'some_sql' |/usr/bin/mysql -u some_args"

我如何使用 Popen 执行此操作?

p1 = sp.Popen(["ssh", "user@some_host", "echo \"%s\"" % sql], stdout=sp.PIPE) 
p2 = sp.Popen(["/usr/bin/mysql", "-u some_args"], stdin=p1.stdout, stdout=sp.PIPE) 

返回“OSError: [Errno 2] No such file or directory”,因为它正在本地机器上寻找/usr/bin/mysql。

请您参考如下方法:

我根本不会使用 Popen;使用 paramiko相反

import paramiko 
 
ssh_client = paramiko.SSHClient() 
ssh_client.load_system_host_keys() 
ssh_client.connect('www.somehost.com', username='user') 
ssh_client.exec_command(' "echo 'some_sql' | /usr/bin/mysql -u some_args"')